home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / tex / tex31 / texsrc.lzh / TEXSRC.LZH / itex.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-01-09  |  83.9 KB  |  3,333 lines

  1. #define EXTERN extern
  2. #include "texd.h"
  3.  
  4. void initialize ( ) 
  5. {initialize_regmem 
  6.   integer i  ; 
  7.   integer k  ; 
  8.   hyphpointer z  ; 
  9.   xchr [ 32 ] = ' ' ; 
  10.   xchr [ 33 ] = '!' ; 
  11.   xchr [ 34 ] = '"' ; 
  12.   xchr [ 35 ] = '#' ; 
  13.   xchr [ 36 ] = '$' ; 
  14.   xchr [ 37 ] = '%' ; 
  15.   xchr [ 38 ] = '&' ; 
  16.   xchr [ 39 ] = '\'' ; 
  17.   xchr [ 40 ] = '(' ; 
  18.   xchr [ 41 ] = ')' ; 
  19.   xchr [ 42 ] = '*' ; 
  20.   xchr [ 43 ] = '+' ; 
  21.   xchr [ 44 ] = ',' ; 
  22.   xchr [ 45 ] = '-' ; 
  23.   xchr [ 46 ] = '.' ; 
  24.   xchr [ 47 ] = '/' ; 
  25.   xchr [ 48 ] = '0' ; 
  26.   xchr [ 49 ] = '1' ; 
  27.   xchr [ 50 ] = '2' ; 
  28.   xchr [ 51 ] = '3' ; 
  29.   xchr [ 52 ] = '4' ; 
  30.   xchr [ 53 ] = '5' ; 
  31.   xchr [ 54 ] = '6' ; 
  32.   xchr [ 55 ] = '7' ; 
  33.   xchr [ 56 ] = '8' ; 
  34.   xchr [ 57 ] = '9' ; 
  35.   xchr [ 58 ] = ':' ; 
  36.   xchr [ 59 ] = ';' ; 
  37.   xchr [ 60 ] = '<' ; 
  38.   xchr [ 61 ] = '=' ; 
  39.   xchr [ 62 ] = '>' ; 
  40.   xchr [ 63 ] = '?' ; 
  41.   xchr [ 64 ] = '@' ; 
  42.   xchr [ 65 ] = 'A' ; 
  43.   xchr [ 66 ] = 'B' ; 
  44.   xchr [ 67 ] = 'C' ; 
  45.   xchr [ 68 ] = 'D' ; 
  46.   xchr [ 69 ] = 'E' ; 
  47.   xchr [ 70 ] = 'F' ; 
  48.   xchr [ 71 ] = 'G' ; 
  49.   xchr [ 72 ] = 'H' ; 
  50.   xchr [ 73 ] = 'I' ; 
  51.   xchr [ 74 ] = 'J' ; 
  52.   xchr [ 75 ] = 'K' ; 
  53.   xchr [ 76 ] = 'L' ; 
  54.   xchr [ 77 ] = 'M' ; 
  55.   xchr [ 78 ] = 'N' ; 
  56.   xchr [ 79 ] = 'O' ; 
  57.   xchr [ 80 ] = 'P' ; 
  58.   xchr [ 81 ] = 'Q' ; 
  59.   xchr [ 82 ] = 'R' ; 
  60.   xchr [ 83 ] = 'S' ; 
  61.   xchr [ 84 ] = 'T' ; 
  62.   xchr [ 85 ] = 'U' ; 
  63.   xchr [ 86 ] = 'V' ; 
  64.   xchr [ 87 ] = 'W' ; 
  65.   xchr [ 88 ] = 'X' ; 
  66.   xchr [ 89 ] = 'Y' ; 
  67.   xchr [ 90 ] = 'Z' ; 
  68.   xchr [ 91 ] = '[' ; 
  69.   xchr [ 92 ] = '\\' ; 
  70.   xchr [ 93 ] = ']' ; 
  71.   xchr [ 94 ] = '^' ; 
  72.   xchr [ 95 ] = '_' ; 
  73.   xchr [ 96 ] = '`' ; 
  74.   xchr [ 97 ] = 'a' ; 
  75.   xchr [ 98 ] = 'b' ; 
  76.   xchr [ 99 ] = 'c' ; 
  77.   xchr [ 100 ] = 'd' ; 
  78.   xchr [ 101 ] = 'e' ; 
  79.   xchr [ 102 ] = 'f' ; 
  80.   xchr [ 103 ] = 'g' ; 
  81.   xchr [ 104 ] = 'h' ; 
  82.   xchr [ 105 ] = 'i' ; 
  83.   xchr [ 106 ] = 'j' ; 
  84.   xchr [ 107 ] = 'k' ; 
  85.   xchr [ 108 ] = 'l' ; 
  86.   xchr [ 109 ] = 'm' ; 
  87.   xchr [ 110 ] = 'n' ; 
  88.   xchr [ 111 ] = 'o' ; 
  89.   xchr [ 112 ] = 'p' ; 
  90.   xchr [ 113 ] = 'q' ; 
  91.   xchr [ 114 ] = 'r' ; 
  92.   xchr [ 115 ] = 's' ; 
  93.   xchr [ 116 ] = 't' ; 
  94.   xchr [ 117 ] = 'u' ; 
  95.   xchr [ 118 ] = 'v' ; 
  96.   xchr [ 119 ] = 'w' ; 
  97.   xchr [ 120 ] = 'x' ; 
  98.   xchr [ 121 ] = 'y' ; 
  99.   xchr [ 122 ] = 'z' ; 
  100.   xchr [ 123 ] = '{' ; 
  101.   xchr [ 124 ] = '|' ; 
  102.   xchr [ 125 ] = '}' ; 
  103.   xchr [ 126 ] = '~' ; 
  104.   {register integer for_end; i = 0 ; for_end = 31 ; if ( i <= for_end) do 
  105.     xchr [ i ] = chr ( i ) ; 
  106.   while ( i++ < for_end ) ; } 
  107.   {register integer for_end; i = 127 ; for_end = 255 ; if ( i <= for_end) do 
  108.     xchr [ i ] = chr ( i ) ; 
  109.   while ( i++ < for_end ) ; } 
  110.   {register integer for_end; i = 0 ; for_end = 255 ; if ( i <= for_end) do 
  111.     xord [ chr ( i ) ] = 127 ; 
  112.   while ( i++ < for_end ) ; } 
  113.   {register integer for_end; i = 128 ; for_end = 255 ; if ( i <= for_end) do 
  114.     xord [ xchr [ i ] ] = i ; 
  115.   while ( i++ < for_end ) ; } 
  116.   {register integer for_end; i = 0 ; for_end = 126 ; if ( i <= for_end) do 
  117.     xord [ xchr [ i ] ] = i ; 
  118.   while ( i++ < for_end ) ; } 
  119.   interaction = 3 ; 
  120.   deletionsallowed = true ; 
  121.   errorcount = 0 ; 
  122.   helpptr = 0 ; 
  123.   useerrhelp = false ; 
  124.   interrupt = 0 ; 
  125.   OKtointerrupt = true ; 
  126.     ;
  127. #ifdef DEBUG
  128.   wasmemend = memmin ; 
  129.   waslomax = memmin ; 
  130.   washimin = memmax ; 
  131.   panicking = false ; 
  132. #endif /* DEBUG */
  133.   nestptr = 0 ; 
  134.   maxneststack = 0 ; 
  135.   curlist .modefield = 1 ; 
  136.   curlist .headfield = memtop - 1 ; 
  137.   curlist .tailfield = memtop - 1 ; 
  138.   curlist .auxfield .cint = -65536000L ; 
  139.   curlist .mlfield = 0 ; 
  140.   curlist .lhmfield = 0 ; 
  141.   curlist .rhmfield = 0 ; 
  142.   curlist .pgfield = 0 ; 
  143.   shownmode = 0 ; 
  144.   pagecontents = 0 ; 
  145.   pagetail = memtop - 2 ; 
  146.   mem [ memtop - 2 ] .hh .v.RH = 0 ; 
  147.   lastglue = 65535L ; 
  148.   lastpenalty = 0 ; 
  149.   lastkern = 0 ; 
  150.   pagesofar [ 7 ] = 0 ; 
  151.   pagemaxdepth = 0 ; 
  152.   {register integer for_end; k = 6163 ; for_end = 7006 ; if ( k <= for_end) 
  153.   do 
  154.     xeqlevel [ k ] = 1 ; 
  155.   while ( k++ < for_end ) ; } 
  156.   nonewcontrolsequence = true ; 
  157.   hash [ 514 ] .v.LH = 0 ; 
  158.   hash [ 514 ] .v.RH = 0 ; 
  159.   {register integer for_end; k = 515 ; for_end = 3780 ; if ( k <= for_end) do 
  160.     hash [ k ] = hash [ 514 ] ; 
  161.   while ( k++ < for_end ) ; } 
  162.   saveptr = 0 ; 
  163.   curlevel = 1 ; 
  164.   curgroup = 0 ; 
  165.   curboundary = 0 ; 
  166.   maxsavestack = 0 ; 
  167.   magset = 0 ; 
  168.   curmark [ 0 ] = 0 ; 
  169.   curmark [ 1 ] = 0 ; 
  170.   curmark [ 2 ] = 0 ; 
  171.   curmark [ 3 ] = 0 ; 
  172.   curmark [ 4 ] = 0 ; 
  173.   curval = 0 ; 
  174.   curvallevel = 0 ; 
  175.   radix = 0 ; 
  176.   curorder = 0 ; 
  177.   {register integer for_end; k = 0 ; for_end = 16 ; if ( k <= for_end) do 
  178.     readopen [ k ] = 2 ; 
  179.   while ( k++ < for_end ) ; } 
  180.   condptr = 0 ; 
  181.   iflimit = 0 ; 
  182.   curif = 0 ; 
  183.   ifline = 0 ; 
  184.   {register integer for_end; k = 0 ; for_end = fontmax ; if ( k <= for_end) 
  185.   do 
  186.     fontused [ k ] = false ; 
  187.   while ( k++ < for_end ) ; } 
  188.   nullcharacter .b0 = 0 ; 
  189.   nullcharacter .b1 = 0 ; 
  190.   nullcharacter .b2 = 0 ; 
  191.   nullcharacter .b3 = 0 ; 
  192.   totalpages = 0 ; 
  193.   maxv = 0 ; 
  194.   maxh = 0 ; 
  195.   maxpush = 0 ; 
  196.   lastbop = -1 ; 
  197.   doingleaders = false ; 
  198.   deadcycles = 0 ; 
  199.   curs = -1 ; 
  200.   halfbuf = dvibufsize / 2 ; 
  201.   dvilimit = dvibufsize ; 
  202.   dviptr = 0 ; 
  203.   dvioffset = 0 ; 
  204.   dvigone = 0 ; 
  205.   downptr = 0 ; 
  206.   rightptr = 0 ; 
  207.   adjusttail = 0 ; 
  208.   lastbadness = 0 ; 
  209.   packbeginline = 0 ; 
  210.   emptyfield .v.RH = 0 ; 
  211.   emptyfield .v.LH = 0 ; 
  212.   nulldelimiter .b0 = 0 ; 
  213.   nulldelimiter .b1 = 0 ; 
  214.   nulldelimiter .b2 = 0 ; 
  215.   nulldelimiter .b3 = 0 ; 
  216.   alignptr = 0 ; 
  217.   curalign = 0 ; 
  218.   curspan = 0 ; 
  219.   curloop = 0 ; 
  220.   curhead = 0 ; 
  221.   curtail = 0 ; 
  222.   {register integer for_end; z = 0 ; for_end = 307 ; if ( z <= for_end) do 
  223.     {
  224.       hyphword [ z ] = 0 ; 
  225.       hyphlist [ z ] = 0 ; 
  226.     } 
  227.   while ( z++ < for_end ) ; } 
  228.   hyphcount = 0 ; 
  229.   outputactive = false ; 
  230.   insertpenalties = 0 ; 
  231.   ligaturepresent = false ; 
  232.   cancelboundary = false ; 
  233.   lfthit = false ; 
  234.   rthit = false ; 
  235.   insdisc = false ; 
  236.   aftertoken = 0 ; 
  237.   longhelpseen = false ; 
  238.   formatident = 0 ; 
  239.   {register integer for_end; k = 0 ; for_end = 17 ; if ( k <= for_end) do 
  240.     writeopen [ k ] = false ; 
  241.   while ( k++ < for_end ) ; } 
  242.   editnamestart = 0 ; 
  243.     ;
  244. #ifdef INITEX
  245.   {register integer for_end; k = 1 ; for_end = 19 ; if ( k <= for_end) do 
  246.     mem [ k ] .cint = 0 ; 
  247.   while ( k++ < for_end ) ; } 
  248.   k = 0 ; 
  249.   while ( k <= 19 ) {
  250.       
  251.     mem [ k ] .hh .v.RH = 1 ; 
  252.     mem [ k ] .hh.b0 = 0 ; 
  253.     mem [ k ] .hh.b1 = 0 ; 
  254.     k = k + 4 ; 
  255.   } 
  256.   mem [ 6 ] .cint = 65536L ; 
  257.   mem [ 4 ] .hh.b0 = 1 ; 
  258.   mem [ 10 ] .cint = 65536L ; 
  259.   mem [ 8 ] .hh.b0 = 2 ; 
  260.   mem [ 14 ] .cint = 65536L ; 
  261.   mem [ 12 ] .hh.b0 = 1 ; 
  262.   mem [ 15 ] .cint = 65536L ; 
  263.   mem [ 12 ] .hh.b1 = 1 ; 
  264.   mem [ 18 ] .cint = -65536L ; 
  265.   mem [ 16 ] .hh.b0 = 1 ; 
  266.   rover = 20 ; 
  267.   mem [ rover ] .hh .v.RH = 65535L ; 
  268.   mem [ rover ] .hh .v.LH = 1000 ; 
  269.   mem [ rover + 1 ] .hh .v.LH = rover ; 
  270.   mem [ rover + 1 ] .hh .v.RH = rover ; 
  271.   lomemmax = rover + 1000 ; 
  272.   mem [ lomemmax ] .hh .v.RH = 0 ; 
  273.   mem [ lomemmax ] .hh .v.LH = 0 ; 
  274.   {register integer for_end; k = memtop - 13 ; for_end = memtop ; if ( k <= 
  275.   for_end) do 
  276.     mem [ k ] = mem [ lomemmax ] ; 
  277.   while ( k++ < for_end ) ; } 
  278.   mem [ memtop - 10 ] .hh .v.LH = 7614 ; 
  279.   mem [ memtop - 9 ] .hh .v.RH = 256 ; 
  280.   mem [ memtop - 9 ] .hh .v.LH = 0 ; 
  281.   mem [ memtop - 7 ] .hh.b0 = 1 ; 
  282.   mem [ memtop - 6 ] .hh .v.LH = 65535L ; 
  283.   mem [ memtop - 7 ] .hh.b1 = 0 ; 
  284.   mem [ memtop ] .hh.b1 = 255 ; 
  285.   mem [ memtop ] .hh.b0 = 1 ; 
  286.   mem [ memtop ] .hh .v.RH = memtop ; 
  287.   mem [ memtop - 2 ] .hh.b0 = 10 ; 
  288.   mem [ memtop - 2 ] .hh.b1 = 0 ; 
  289.   avail = 0 ; 
  290.   memend = memtop ; 
  291.   himemmin = memtop - 13 ; 
  292.   varused = 20 ; 
  293.   dynused = 14 ; 
  294.   eqtb [ 3781 ] .hh.b0 = 101 ; 
  295.   eqtb [ 3781 ] .hh .v.RH = 0 ; 
  296.   eqtb [ 3781 ] .hh.b1 = 0 ; 
  297.   {register integer for_end; k = 1 ; for_end = 3780 ; if ( k <= for_end) do 
  298.     eqtb [ k ] = eqtb [ 3781 ] ; 
  299.   while ( k++ < for_end ) ; } 
  300.   eqtb [ 3782 ] .hh .v.RH = 0 ; 
  301.   eqtb [ 3782 ] .hh.b1 = 1 ; 
  302.   eqtb [ 3782 ] .hh.b0 = 117 ; 
  303.   {register integer for_end; k = 3783 ; for_end = 4311 ; if ( k <= for_end) 
  304.   do 
  305.     eqtb [ k ] = eqtb [ 3782 ] ; 
  306.   while ( k++ < for_end ) ; } 
  307.   mem [ 0 ] .hh .v.RH = mem [ 0 ] .hh .v.RH + 530 ; 
  308.   eqtb [ 4312 ] .hh .v.RH = 0 ; 
  309.   eqtb [ 4312 ] .hh.b0 = 118 ; 
  310.   eqtb [ 4312 ] .hh.b1 = 1 ; 
  311.   {register integer for_end; k = 4313 ; for_end = 4577 ; if ( k <= for_end) 
  312.   do 
  313.     eqtb [ k ] = eqtb [ 3781 ] ; 
  314.   while ( k++ < for_end ) ; } 
  315.   eqtb [ 4578 ] .hh .v.RH = 0 ; 
  316.   eqtb [ 4578 ] .hh.b0 = 119 ; 
  317.   eqtb [ 4578 ] .hh.b1 = 1 ; 
  318.   {register integer for_end; k = 4579 ; for_end = 4833 ; if ( k <= for_end) 
  319.   do 
  320.     eqtb [ k ] = eqtb [ 4578 ] ; 
  321.   while ( k++ < for_end ) ; } 
  322.   eqtb [ 4834 ] .hh .v.RH = 0 ; 
  323.   eqtb [ 4834 ] .hh.b0 = 120 ; 
  324.   eqtb [ 4834 ] .hh.b1 = 1 ; 
  325.   {register integer for_end; k = 4835 ; for_end = 4882 ; if ( k <= for_end) 
  326.   do 
  327.     eqtb [ k ] = eqtb [ 4834 ] ; 
  328.   while ( k++ < for_end ) ; } 
  329.   eqtb [ 4883 ] .hh .v.RH = 0 ; 
  330.   eqtb [ 4883 ] .hh.b0 = 120 ; 
  331.   eqtb [ 4883 ] .hh.b1 = 1 ; 
  332.   {register integer for_end; k = 4884 ; for_end = 6162 ; if ( k <= for_end) 
  333.   do 
  334.     eqtb [ k ] = eqtb [ 4883 ] ; 
  335.   while ( k++ < for_end ) ; } 
  336.   {register integer for_end; k = 0 ; for_end = 255 ; if ( k <= for_end) do 
  337.     {
  338.       eqtb [ 4883 + k ] .hh .v.RH = 12 ; 
  339.       eqtb [ 5907 + k ] .hh .v.RH = k ; 
  340.       eqtb [ 5651 + k ] .hh .v.RH = 1000 ; 
  341.     } 
  342.   while ( k++ < for_end ) ; } 
  343.   eqtb [ 4896 ] .hh .v.RH = 5 ; 
  344.   eqtb [ 4915 ] .hh .v.RH = 10 ; 
  345.   eqtb [ 4975 ] .hh .v.RH = 0 ; 
  346.   eqtb [ 4920 ] .hh .v.RH = 14 ; 
  347.   eqtb [ 5010 ] .hh .v.RH = 15 ; 
  348.   eqtb [ 4883 ] .hh .v.RH = 9 ; 
  349.   {register integer for_end; k = 48 ; for_end = 57 ; if ( k <= for_end) do 
  350.     eqtb [ 5907 + k ] .hh .v.RH = k + 28672 ; 
  351.   while ( k++ < for_end ) ; } 
  352.   {register integer for_end; k = 65 ; for_end = 90 ; if ( k <= for_end) do 
  353.     {
  354.       eqtb [ 4883 + k ] .hh .v.RH = 11 ; 
  355.       eqtb [ 4883 + k + 32 ] .hh .v.RH = 11 ; 
  356.       eqtb [ 5907 + k ] .hh .v.RH = k + 28928 ; 
  357.       eqtb [ 5907 + k + 32 ] .hh .v.RH = k + 28960 ; 
  358.       eqtb [ 5139 + k ] .hh .v.RH = k + 32 ; 
  359.       eqtb [ 5139 + k + 32 ] .hh .v.RH = k + 32 ; 
  360.       eqtb [ 5395 + k ] .hh .v.RH = k ; 
  361.       eqtb [ 5395 + k + 32 ] .hh .v.RH = k ; 
  362.       eqtb [ 5651 + k ] .hh .v.RH = 999 ; 
  363.     } 
  364.   while ( k++ < for_end ) ; } 
  365.   {register integer for_end; k = 6163 ; for_end = 6473 ; if ( k <= for_end) 
  366.   do 
  367.     eqtb [ k ] .cint = 0 ; 
  368.   while ( k++ < for_end ) ; } 
  369.   eqtb [ 6180 ] .cint = 1000 ; 
  370.   eqtb [ 6164 ] .cint = 10000 ; 
  371.   eqtb [ 6204 ] .cint = 1 ; 
  372.   eqtb [ 6203 ] .cint = 25 ; 
  373.   eqtb [ 6208 ] .cint = 92 ; 
  374.   eqtb [ 6211 ] .cint = 13 ; 
  375.   {register integer for_end; k = 0 ; for_end = 255 ; if ( k <= for_end) do 
  376.     eqtb [ 6474 + k ] .cint = -1 ; 
  377.   while ( k++ < for_end ) ; } 
  378.   eqtb [ 6520 ] .cint = 0 ; 
  379.   {register integer for_end; k = 6730 ; for_end = 7006 ; if ( k <= for_end) 
  380.   do 
  381.     eqtb [ k ] .cint = 0 ; 
  382.   while ( k++ < for_end ) ; } 
  383.   hashused = 3514 ; 
  384.   cscount = 0 ; 
  385.   eqtb [ 3523 ] .hh.b0 = 116 ; 
  386.   hash [ 3523 ] .v.RH = 498 ; 
  387.   fontptr = 0 ; 
  388.   fmemptr = 7 ; 
  389.   fontname [ 0 ] = 794 ; 
  390.   fontarea [ 0 ] = 335 ; 
  391.   hyphenchar [ 0 ] = 45 ; 
  392.   skewchar [ 0 ] = -1 ; 
  393.   bcharlabel [ 0 ] = fontmemsize ; 
  394.   fontbchar [ 0 ] = 256 ; 
  395.   fontfalsebchar [ 0 ] = 256 ; 
  396.   fontbc [ 0 ] = 1 ; 
  397.   fontec [ 0 ] = 0 ; 
  398.   fontsize [ 0 ] = 0 ; 
  399.   fontdsize [ 0 ] = 0 ; 
  400.   charbase [ 0 ] = 0 ; 
  401.   widthbase [ 0 ] = 0 ; 
  402.   heightbase [ 0 ] = 0 ; 
  403.   depthbase [ 0 ] = 0 ; 
  404.   italicbase [ 0 ] = 0 ; 
  405.   ligkernbase [ 0 ] = 0 ; 
  406.   kernbase [ 0 ] = 0 ; 
  407.   extenbase [ 0 ] = 0 ; 
  408.   fontglue [ 0 ] = 0 ; 
  409.   fontparams [ 0 ] = 7 ; 
  410.   parambase [ 0 ] = -1 ; 
  411.   {register integer for_end; k = 0 ; for_end = 6 ; if ( k <= for_end) do 
  412.     fontinfo [ k ] .cint = 0 ; 
  413.   while ( k++ < for_end ) ; } 
  414.   {register integer for_end; k = - (integer) trieopsize ; for_end = 
  415.   trieopsize ; if ( k <= for_end) do 
  416.     trieophash [ k ] = 0 ; 
  417.   while ( k++ < for_end ) ; } 
  418.   {register integer for_end; k = 0 ; for_end = 255 ; if ( k <= for_end) do 
  419.     trieused [ k ] = mintrieop ; 
  420.   while ( k++ < for_end ) ; } 
  421.   maxopused = mintrieop ; 
  422.   trieopptr = 0 ; 
  423.   trienotready = true ; 
  424.   triel [ 0 ] = 0 ; 
  425.   triec [ 0 ] = 0 ; 
  426.   trieptr = 0 ; 
  427.   hash [ 3514 ] .v.RH = 1183 ; 
  428.   formatident = 1248 ; 
  429.   hash [ 3522 ] .v.RH = 1286 ; 
  430.   eqtb [ 3522 ] .hh.b1 = 1 ; 
  431.   eqtb [ 3522 ] .hh.b0 = 113 ; 
  432.   eqtb [ 3522 ] .hh .v.RH = 0 ; 
  433. #endif /* INITEX */
  434. #ifdef INITEX
  435. boolean getstringsstarted ( ) 
  436. {/* 30 10 */ register boolean Result; getstringsstarted_regmem 
  437.   unsigned char k, l  ; 
  438.   ASCIIcode m, n  ; 
  439.   strnumber g  ; 
  440.   integer a  ; 
  441.   boolean c  ; 
  442.   poolptr = 0 ; 
  443.   strptr = 0 ; 
  444.   strstart [ 0 ] = 0 ; 
  445.   {register integer for_end; k = 0 ; for_end = 255 ; if ( k <= for_end) do 
  446.     {
  447.       if ( ( ( k < 32 ) || ( k > 126 ) ) ) 
  448.       {
  449.     {
  450.       strpool [ poolptr ] = 94 ; 
  451.       incr ( poolptr ) ; 
  452.     } 
  453.     {
  454.       strpool [ poolptr ] = 94 ; 
  455.       incr ( poolptr ) ; 
  456.     } 
  457.     if ( k < 64 ) 
  458.     {
  459.       strpool [ poolptr ] = k + 64 ; 
  460.       incr ( poolptr ) ; 
  461.     } 
  462.     else if ( k < 128 ) 
  463.     {
  464.       strpool [ poolptr ] = k - 64 ; 
  465.       incr ( poolptr ) ; 
  466.     } 
  467.     else {
  468.         
  469.       l = k / 16 ; 
  470.       if ( l < 10 ) 
  471.       {
  472.         strpool [ poolptr ] = l + 48 ; 
  473.         incr ( poolptr ) ; 
  474.       } 
  475.       else {
  476.           
  477.         strpool [ poolptr ] = l + 87 ; 
  478.         incr ( poolptr ) ; 
  479.       } 
  480.       l = k % 16 ; 
  481.       if ( l < 10 ) 
  482.       {
  483.         strpool [ poolptr ] = l + 48 ; 
  484.         incr ( poolptr ) ; 
  485.       } 
  486.       else {
  487.           
  488.         strpool [ poolptr ] = l + 87 ; 
  489.         incr ( poolptr ) ; 
  490.       } 
  491.     } 
  492.       } 
  493.       else {
  494.       
  495.     strpool [ poolptr ] = k ; 
  496.     incr ( poolptr ) ; 
  497.       } 
  498.       g = makestring () ; 
  499.     } 
  500.   while ( k++ < for_end ) ; } 
  501.   vstrcpy ( nameoffile + 1 , poolname ) ; 
  502.   nameoffile [ 0 ] = ' ' ; 
  503.   nameoffile [ strlen ( poolname ) + 1 ] = ' ' ; 
  504.   if ( aopenin ( poolfile , TEXPOOLPATH ) ) 
  505.   {
  506.     c = false ; 
  507.     do {
  508.     { 
  509.     if ( eof ( poolfile ) ) 
  510.     {
  511.       wakeupterminal () ; 
  512.       (void) fprintf( stdout , "%s\n",  "! tex.pool has no check sum." ) ; 
  513.       aclose ( poolfile ) ; 
  514.       Result = false ; 
  515.       return(Result) ; 
  516.     } 
  517.     read ( poolfile , m ) ; 
  518.     read ( poolfile , n ) ; 
  519.     if ( m == '*' ) 
  520.     {
  521.       a = 0 ; 
  522.       k = 1 ; 
  523.       while ( true ) {
  524.           
  525.         if ( ( xord [ n ] < 48 ) || ( xord [ n ] > 57 ) ) 
  526.         {
  527.           wakeupterminal () ; 
  528.           (void) fprintf( stdout , "%s\n",                "! tex.pool check sum doesn't have nine digits." ) ; 
  529.           aclose ( poolfile ) ; 
  530.           Result = false ; 
  531.           return(Result) ; 
  532.         } 
  533.         a = 10 * a + xord [ n ] - 48 ; 
  534.         if ( k == 9 ) 
  535.         goto lab30 ; 
  536.         incr ( k ) ; 
  537.         read ( poolfile , n ) ; 
  538.       } 
  539.       lab30: if ( a != 127541235L ) 
  540.       {
  541.         wakeupterminal () ; 
  542.         (void) fprintf( stdout , "%s\n",  "! tex.pool doesn't match; tangle me again." ) 
  543.         ; 
  544.         aclose ( poolfile ) ; 
  545.         Result = false ; 
  546.         return(Result) ; 
  547.       } 
  548.       c = true ; 
  549.     } 
  550.     else {
  551.         
  552.       if ( ( xord [ m ] < 48 ) || ( xord [ m ] > 57 ) || ( xord [ n ] < 48 
  553.       ) || ( xord [ n ] > 57 ) ) 
  554.       {
  555.         wakeupterminal () ; 
  556.         (void) fprintf( stdout , "%s\n",              "! tex.pool line doesn't begin with two digits." ) ; 
  557.         aclose ( poolfile ) ; 
  558.         Result = false ; 
  559.         return(Result) ; 
  560.       } 
  561.       l = xord [ m ] * 10 + xord [ n ] - 48 * 11 ; 
  562.       if ( poolptr + l + stringvacancies > poolsize ) 
  563.       {
  564.         wakeupterminal () ; 
  565.         (void) fprintf( stdout , "%s\n",  "! You have to increase POOLSIZE." ) ; 
  566.         aclose ( poolfile ) ; 
  567.         Result = false ; 
  568.         return(Result) ; 
  569.       } 
  570.       {register integer for_end; k = 1 ; for_end = l ; if ( k <= for_end) 
  571.       do 
  572.         {
  573.           if ( eoln ( poolfile ) ) 
  574.           m = ' ' ; 
  575.           else read ( poolfile , m ) ; 
  576.           {
  577.         strpool [ poolptr ] = xord [ m ] ; 
  578.         incr ( poolptr ) ; 
  579.           } 
  580.         } 
  581.       while ( k++ < for_end ) ; } 
  582.       readln ( poolfile ) ; 
  583.       g = makestring () ; 
  584.     } 
  585.       } 
  586.     } while ( ! ( c ) ) ; 
  587.     aclose ( poolfile ) ; 
  588.     Result = true ; 
  589.   } 
  590.   else {
  591.       
  592.     wakeupterminal () ; 
  593.     (void) fprintf( stdout , "%s\n",  "! I can't read tex.pool." ) ; 
  594.     Result = false ; 
  595.     return(Result) ; 
  596.   } 
  597.   return(Result) ; 
  598. #endif /* INITEX */
  599. #ifdef INITEX
  600. void sortavail ( ) 
  601. {sortavail_regmem 
  602.   halfword p, q, r  ; 
  603.   halfword oldrover  ; 
  604.   p = getnode ( 1073741824L ) ; 
  605.   p = mem [ rover + 1 ] .hh .v.RH ; 
  606.   mem [ rover + 1 ] .hh .v.RH = 65535L ; 
  607.   oldrover = rover ; 
  608.   while ( p != oldrover ) if ( p < rover ) 
  609.   {
  610.     q = p ; 
  611.     p = mem [ q + 1 ] .hh .v.RH ; 
  612.     mem [ q + 1 ] .hh .v.RH = rover ; 
  613.     rover = q ; 
  614.   } 
  615.   else {
  616.       
  617.     q = rover ; 
  618.     while ( mem [ q + 1 ] .hh .v.RH < p ) q = mem [ q + 1 ] .hh .v.RH ; 
  619.     r = mem [ p + 1 ] .hh .v.RH ; 
  620.     mem [ p + 1 ] .hh .v.RH = mem [ q + 1 ] .hh .v.RH ; 
  621.     mem [ q + 1 ] .hh .v.RH = p ; 
  622.     p = r ; 
  623.   } 
  624.   p = rover ; 
  625.   while ( mem [ p + 1 ] .hh .v.RH != 65535L ) {
  626.       
  627.     mem [ mem [ p + 1 ] .hh .v.RH + 1 ] .hh .v.LH = p ; 
  628.     p = mem [ p + 1 ] .hh .v.RH ; 
  629.   } 
  630.   mem [ p + 1 ] .hh .v.RH = rover ; 
  631.   mem [ rover + 1 ] .hh .v.LH = p ; 
  632. #endif /* INITEX */
  633. #ifdef INITEX
  634. void zprimitive ( s , c , o ) 
  635. strnumber s ; 
  636. quarterword c ; 
  637. halfword o ; 
  638. {primitive_regmem 
  639.   poolpointer k  ; 
  640.   smallnumber j  ; 
  641.   smallnumber l  ; 
  642.   if ( s < 256 ) 
  643.   curval = s + 257 ; 
  644.   else {
  645.       
  646.     k = strstart [ s ] ; 
  647.     l = strstart [ s + 1 ] - k ; 
  648.     {register integer for_end; j = 0 ; for_end = l - 1 ; if ( j <= for_end) 
  649.     do 
  650.       buffer [ j ] = strpool [ k + j ] ; 
  651.     while ( j++ < for_end ) ; } 
  652.     curval = idlookup ( 0 , l ) ; 
  653.     {
  654.       decr ( strptr ) ; 
  655.       poolptr = strstart [ strptr ] ; 
  656.     } 
  657.     hash [ curval ] .v.RH = s ; 
  658.   } 
  659.   eqtb [ curval ] .hh.b1 = 1 ; 
  660.   eqtb [ curval ] .hh.b0 = c ; 
  661.   eqtb [ curval ] .hh .v.RH = o ; 
  662. #endif /* INITEX */
  663. #ifdef INITEX
  664. trieopcode znewtrieop ( d , n , v ) 
  665. smallnumber d ; 
  666. smallnumber n ; 
  667. trieopcode v ; 
  668. {/* 10 */ register trieopcode Result; newtrieop_regmem 
  669.   integer h  ; 
  670.   trieopcode u  ; 
  671.   integer l  ; 
  672.   h = abs ( toint ( n ) + 313 * toint ( d ) + 361 * toint ( v ) + 1009 * toint 
  673.   ( curlang ) ) % ( trieopsize + trieopsize ) - trieopsize ; 
  674.   while ( true ) {
  675.       
  676.     l = trieophash [ h ] ; 
  677.     if ( l == 0 ) 
  678.     {
  679.       if ( trieopptr == trieopsize ) 
  680.       overflow ( 942 , trieopsize ) ; 
  681.       u = trieused [ curlang ] ; 
  682.       if ( u == maxtrieop ) 
  683.       overflow ( 943 , maxtrieop - mintrieop ) ; 
  684.       incr ( trieopptr ) ; 
  685.       incr ( u ) ; 
  686.       trieused [ curlang ] = u ; 
  687.       if ( u > maxopused ) 
  688.       maxopused = u ; 
  689.       hyfdistance [ trieopptr ] = d ; 
  690.       hyfnum [ trieopptr ] = n ; 
  691.       hyfnext [ trieopptr ] = v ; 
  692.       trieoplang [ trieopptr ] = curlang ; 
  693.       trieophash [ h ] = trieopptr ; 
  694.       trieopval [ trieopptr ] = u ; 
  695.       Result = u ; 
  696.       return(Result) ; 
  697.     } 
  698.     if ( ( hyfdistance [ l ] == d ) && ( hyfnum [ l ] == n ) && ( hyfnext [ l 
  699.     ] == v ) && ( trieoplang [ l ] == curlang ) ) 
  700.     {
  701.       Result = trieopval [ l ] ; 
  702.       return(Result) ; 
  703.     } 
  704.     if ( h > - (integer) trieopsize ) 
  705.     decr ( h ) ; 
  706.     else h = trieopsize ; 
  707.   } 
  708.   return(Result) ; 
  709. triepointer ztrienode ( p ) 
  710. triepointer p ; 
  711. {/* 10 */ register triepointer Result; trienode_regmem 
  712.   triepointer h  ; 
  713.   triepointer q  ; 
  714.   h = abs ( toint ( triec [ p ] ) + 1009 * toint ( trieo [ p ] ) + 2718 * 
  715.   toint ( triel [ p ] ) + 3142 * toint ( trier [ p ] ) ) % triesize ; 
  716.   while ( true ) {
  717.       
  718.     q = triehash [ h ] ; 
  719.     if ( q == 0 ) 
  720.     {
  721.       triehash [ h ] = p ; 
  722.       Result = p ; 
  723.       return(Result) ; 
  724.     } 
  725.     if ( ( triec [ q ] == triec [ p ] ) && ( trieo [ q ] == trieo [ p ] ) && ( 
  726.     triel [ q ] == triel [ p ] ) && ( trier [ q ] == trier [ p ] ) ) 
  727.     {
  728.       Result = q ; 
  729.       return(Result) ; 
  730.     } 
  731.     if ( h > 0 ) 
  732.     decr ( h ) ; 
  733.     else h = triesize ; 
  734.   } 
  735.   return(Result) ; 
  736. triepointer zcompresstrie ( p ) 
  737. triepointer p ; 
  738. {register triepointer Result; compresstrie_regmem 
  739.   if ( p == 0 ) 
  740.   Result = 0 ; 
  741.   else {
  742.       
  743.     triel [ p ] = compresstrie ( triel [ p ] ) ; 
  744.     trier [ p ] = compresstrie ( trier [ p ] ) ; 
  745.     Result = trienode ( p ) ; 
  746.   } 
  747.   return(Result) ; 
  748. void zfirstfit ( p ) 
  749. triepointer p ; 
  750. {/* 45 40 */ firstfit_regmem 
  751.   triepointer h  ; 
  752.   triepointer z  ; 
  753.   triepointer q  ; 
  754.   ASCIIcode c  ; 
  755.   triepointer l, r  ; 
  756.   short ll  ; 
  757.   c = triec [ p ] ; 
  758.   z = triemin [ c ] ; 
  759.   while ( true ) {
  760.       
  761.     h = z - c ; 
  762.     if ( triemax < h + 256 ) 
  763.     {
  764.       if ( triesize <= h + 256 ) 
  765.       overflow ( 944 , triesize ) ; 
  766.       do {
  767.       incr ( triemax ) ; 
  768.     trietaken [ triemax ] = false ; 
  769.     trietrl [ triemax ] = triemax + 1 ; 
  770.     trietro [ triemax ] = triemax - 1 ; 
  771.       } while ( ! ( triemax == h + 256 ) ) ; 
  772.     } 
  773.     if ( trietaken [ h ] ) 
  774.     goto lab45 ; 
  775.     q = trier [ p ] ; 
  776.     while ( q > 0 ) {
  777.     
  778.       if ( trietrl [ h + triec [ q ] ] == 0 ) 
  779.       goto lab45 ; 
  780.       q = trier [ q ] ; 
  781.     } 
  782.     goto lab40 ; 
  783.     lab45: z = trietrl [ z ] ; 
  784.   } 
  785.   lab40: trietaken [ h ] = true ; 
  786.   triehash [ p ] = h ; 
  787.   q = p ; 
  788.   do {
  789.       z = h + triec [ q ] ; 
  790.     l = trietro [ z ] ; 
  791.     r = trietrl [ z ] ; 
  792.     trietro [ r ] = l ; 
  793.     trietrl [ l ] = r ; 
  794.     trietrl [ z ] = 0 ; 
  795.     if ( l < 256 ) 
  796.     {
  797.       if ( z < 256 ) 
  798.       ll = z ; 
  799.       else ll = 256 ; 
  800.       do {
  801.       triemin [ l ] = r ; 
  802.     incr ( l ) ; 
  803.       } while ( ! ( l == ll ) ) ; 
  804.     } 
  805.     q = trier [ q ] ; 
  806.   } while ( ! ( q == 0 ) ) ; 
  807. void ztriepack ( p ) 
  808. triepointer p ; 
  809. {triepack_regmem 
  810.   triepointer q  ; 
  811.   do {
  812.       q = triel [ p ] ; 
  813.     if ( ( q > 0 ) && ( triehash [ q ] == 0 ) ) 
  814.     {
  815.       firstfit ( q ) ; 
  816.       triepack ( q ) ; 
  817.     } 
  818.     p = trier [ p ] ; 
  819.   } while ( ! ( p == 0 ) ) ; 
  820. void ztriefix ( p ) 
  821. triepointer p ; 
  822. {triefix_regmem 
  823.   triepointer q  ; 
  824.   ASCIIcode c  ; 
  825.   triepointer z  ; 
  826.   z = triehash [ p ] ; 
  827.   do {
  828.       q = triel [ p ] ; 
  829.     c = triec [ p ] ; 
  830.     trietrl [ z + c ] = triehash [ q ] ; 
  831.     trietrc [ z + c ] = c ; 
  832.     trietro [ z + c ] = trieo [ p ] ; 
  833.     if ( q > 0 ) 
  834.     triefix ( q ) ; 
  835.     p = trier [ p ] ; 
  836.   } while ( ! ( p == 0 ) ) ; 
  837. void newpatterns ( ) 
  838. {/* 30 31 */ newpatterns_regmem 
  839.   smallnumber k, l  ; 
  840.   boolean digitsensed  ; 
  841.   trieopcode v  ; 
  842.   triepointer p, q  ; 
  843.   boolean firstchild  ; 
  844.   ASCIIcode c  ; 
  845.   if ( trienotready ) 
  846.   {
  847.     if ( eqtb [ 6213 ] .cint <= 0 ) 
  848.     curlang = 0 ; 
  849.     else if ( eqtb [ 6213 ] .cint > 255 ) 
  850.     curlang = 0 ; 
  851.     else curlang = eqtb [ 6213 ] .cint ; 
  852.     scanleftbrace () ; 
  853.     k = 0 ; 
  854.     hyf [ 0 ] = 0 ; 
  855.     digitsensed = false ; 
  856.     while ( true ) {
  857.     
  858.       getxtoken () ; 
  859.       switch ( curcmd ) 
  860.       {case 11 : 
  861.       case 12 : 
  862.     if ( digitsensed || ( curchr < 48 ) || ( curchr > 57 ) ) 
  863.     {
  864.       if ( curchr == 46 ) 
  865.       curchr = 0 ; 
  866.       else {
  867.           
  868.         curchr = eqtb [ 5139 + curchr ] .hh .v.RH ; 
  869.         if ( curchr == 0 ) 
  870.         {
  871.           {
  872.         if ( interaction == 3 ) 
  873.         wakeupterminal () ; 
  874.         printnl ( 262 ) ; 
  875.         print ( 950 ) ; 
  876.           } 
  877.           {
  878.         helpptr = 1 ; 
  879.         helpline [ 0 ] = 949 ; 
  880.           } 
  881.           error () ; 
  882.         } 
  883.       } 
  884.       if ( k < 63 ) 
  885.       {
  886.         incr ( k ) ; 
  887.         hc [ k ] = curchr ; 
  888.         hyf [ k ] = 0 ; 
  889.         digitsensed = false ; 
  890.       } 
  891.     } 
  892.     else if ( k < 63 ) 
  893.     {
  894.       hyf [ k ] = curchr - 48 ; 
  895.       digitsensed = true ; 
  896.     } 
  897.     break ; 
  898.       case 10 : 
  899.       case 2 : 
  900.     {
  901.       if ( k > 0 ) 
  902.       {
  903.         if ( hc [ 1 ] == 0 ) 
  904.         hyf [ 0 ] = 0 ; 
  905.         if ( hc [ k ] == 0 ) 
  906.         hyf [ k ] = 0 ; 
  907.         l = k ; 
  908.         v = mintrieop ; 
  909.         while ( true ) {
  910.         
  911.           if ( hyf [ l ] != 0 ) 
  912.           v = newtrieop ( k - l , hyf [ l ] , v ) ; 
  913.           if ( l > 0 ) 
  914.           decr ( l ) ; 
  915.           else goto lab31 ; 
  916.         } 
  917.         lab31: ; 
  918.         q = 0 ; 
  919.         hc [ 0 ] = curlang ; 
  920.         while ( l <= k ) {
  921.         
  922.           c = hc [ l ] ; 
  923.           incr ( l ) ; 
  924.           p = triel [ q ] ; 
  925.           firstchild = true ; 
  926.           while ( ( p > 0 ) && ( c > triec [ p ] ) ) {
  927.           
  928.         q = p ; 
  929.         p = trier [ q ] ; 
  930.         firstchild = false ; 
  931.           } 
  932.           if ( ( p == 0 ) || ( c < triec [ p ] ) ) 
  933.           {
  934.         if ( trieptr == triesize ) 
  935.         overflow ( 944 , triesize ) ; 
  936.         incr ( trieptr ) ; 
  937.         trier [ trieptr ] = p ; 
  938.         p = trieptr ; 
  939.         triel [ p ] = 0 ; 
  940.         if ( firstchild ) 
  941.         triel [ q ] = p ; 
  942.         else trier [ q ] = p ; 
  943.         triec [ p ] = c ; 
  944.         trieo [ p ] = mintrieop ; 
  945.           } 
  946.           q = p ; 
  947.         } 
  948.         if ( trieo [ q ] != mintrieop ) 
  949.         {
  950.           {
  951.         if ( interaction == 3 ) 
  952.         wakeupterminal () ; 
  953.         printnl ( 262 ) ; 
  954.         print ( 951 ) ; 
  955.           } 
  956.           {
  957.         helpptr = 1 ; 
  958.         helpline [ 0 ] = 949 ; 
  959.           } 
  960.           error () ; 
  961.         } 
  962.         trieo [ q ] = v ; 
  963.       } 
  964.       if ( curcmd == 2 ) 
  965.       goto lab30 ; 
  966.       k = 0 ; 
  967.       hyf [ 0 ] = 0 ; 
  968.       digitsensed = false ; 
  969.     } 
  970.     break ; 
  971.     default: 
  972.     {
  973.       {
  974.         if ( interaction == 3 ) 
  975.         wakeupterminal () ; 
  976.         printnl ( 262 ) ; 
  977.         print ( 948 ) ; 
  978.       } 
  979.       printesc ( 946 ) ; 
  980.       {
  981.         helpptr = 1 ; 
  982.         helpline [ 0 ] = 949 ; 
  983.       } 
  984.       error () ; 
  985.     } 
  986.     break ; 
  987.       } 
  988.     } 
  989.     lab30: ; 
  990.   } 
  991.   else {
  992.       
  993.     {
  994.       if ( interaction == 3 ) 
  995.       wakeupterminal () ; 
  996.       printnl ( 262 ) ; 
  997.       print ( 945 ) ; 
  998.     } 
  999.     printesc ( 946 ) ; 
  1000.     {
  1001.       helpptr = 1 ; 
  1002.       helpline [ 0 ] = 947 ; 
  1003.     } 
  1004.     error () ; 
  1005.     mem [ memtop - 12 ] .hh .v.RH = scantoks ( false , false ) ; 
  1006.     flushlist ( defref ) ; 
  1007.   } 
  1008. void inittrie ( ) 
  1009. {inittrie_regmem 
  1010.   triepointer p  ; 
  1011.   integer j, k, t  ; 
  1012.   triepointer r, s  ; 
  1013.   opstart [ 0 ] = - (integer) mintrieop ; 
  1014.   {register integer for_end; j = 1 ; for_end = 255 ; if ( j <= for_end) do 
  1015.     opstart [ j ] = opstart [ j - 1 ] + trieused [ j - 1 ] ; 
  1016.   while ( j++ < for_end ) ; } 
  1017.   {register integer for_end; j = 1 ; for_end = trieopptr ; if ( j <= for_end) 
  1018.   do 
  1019.     trieophash [ j ] = opstart [ trieoplang [ j ] ] + trieopval [ j ] ; 
  1020.   while ( j++ < for_end ) ; } 
  1021.   {register integer for_end; j = 1 ; for_end = trieopptr ; if ( j <= for_end) 
  1022.   do 
  1023.     while ( trieophash [ j ] > j ) {
  1024.     
  1025.       k = trieophash [ j ] ; 
  1026.       t = hyfdistance [ k ] ; 
  1027.       hyfdistance [ k ] = hyfdistance [ j ] ; 
  1028.       hyfdistance [ j ] = t ; 
  1029.       t = hyfnum [ k ] ; 
  1030.       hyfnum [ k ] = hyfnum [ j ] ; 
  1031.       hyfnum [ j ] = t ; 
  1032.       t = hyfnext [ k ] ; 
  1033.       hyfnext [ k ] = hyfnext [ j ] ; 
  1034.       hyfnext [ j ] = t ; 
  1035.       trieophash [ j ] = trieophash [ k ] ; 
  1036.       trieophash [ k ] = k ; 
  1037.     } 
  1038.   while ( j++ < for_end ) ; } 
  1039.   {register integer for_end; p = 0 ; for_end = triesize ; if ( p <= for_end) 
  1040.   do 
  1041.     triehash [ p ] = 0 ; 
  1042.   while ( p++ < for_end ) ; } 
  1043.   triel [ 0 ] = compresstrie ( triel [ 0 ] ) ; 
  1044.   {register integer for_end; p = 0 ; for_end = trieptr ; if ( p <= for_end) 
  1045.   do 
  1046.     triehash [ p ] = 0 ; 
  1047.   while ( p++ < for_end ) ; } 
  1048.   {register integer for_end; p = 0 ; for_end = 255 ; if ( p <= for_end) do 
  1049.     triemin [ p ] = p + 1 ; 
  1050.   while ( p++ < for_end ) ; } 
  1051.   trietrl [ 0 ] = 1 ; 
  1052.   triemax = 0 ; 
  1053.   if ( triel [ 0 ] != 0 ) 
  1054.   {
  1055.     firstfit ( triel [ 0 ] ) ; 
  1056.     triepack ( triel [ 0 ] ) ; 
  1057.   } 
  1058.   if ( triel [ 0 ] == 0 ) 
  1059.   {
  1060.     {register integer for_end; r = 0 ; for_end = 256 ; if ( r <= for_end) do 
  1061.       {
  1062.     trietrl [ r ] = 0 ; 
  1063.     trietro [ r ] = mintrieop ; 
  1064.     trietrc [ r ] = 0 ; 
  1065.       } 
  1066.     while ( r++ < for_end ) ; } 
  1067.     triemax = 256 ; 
  1068.   } 
  1069.   else {
  1070.       
  1071.     triefix ( triel [ 0 ] ) ; 
  1072.     r = 0 ; 
  1073.     do {
  1074.     s = trietrl [ r ] ; 
  1075.       {
  1076.     trietrl [ r ] = 0 ; 
  1077.     trietro [ r ] = mintrieop ; 
  1078.     trietrc [ r ] = 0 ; 
  1079.       } 
  1080.       r = s ; 
  1081.     } while ( ! ( r > triemax ) ) ; 
  1082.   } 
  1083.   trietrc [ 0 ] = 63 ; 
  1084.   trienotready = false ; 
  1085. #endif /* INITEX */
  1086. void zlinebreak ( finalwidowpenalty ) 
  1087. integer finalwidowpenalty ; 
  1088. {/* 30 31 32 33 34 35 22 */ linebreak_regmem 
  1089.   boolean autobreaking  ; 
  1090.   halfword prevp  ; 
  1091.   halfword q, r, s, prevs  ; 
  1092.   internalfontnumber f  ; 
  1093.   smallnumber j  ; 
  1094.   unsigned char c  ; 
  1095.   packbeginline = curlist .mlfield ; 
  1096.   mem [ memtop - 3 ] .hh .v.RH = mem [ curlist .headfield ] .hh .v.RH ; 
  1097.   if ( ( curlist .tailfield >= himemmin ) ) 
  1098.   {
  1099.     mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( 10000 ) ; 
  1100.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1101.   } 
  1102.   else if ( mem [ curlist .tailfield ] .hh.b0 != 10 ) 
  1103.   {
  1104.     mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( 10000 ) ; 
  1105.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1106.   } 
  1107.   else {
  1108.       
  1109.     mem [ curlist .tailfield ] .hh.b0 = 12 ; 
  1110.     deleteglueref ( mem [ curlist .tailfield + 1 ] .hh .v.LH ) ; 
  1111.     flushnodelist ( mem [ curlist .tailfield + 1 ] .hh .v.RH ) ; 
  1112.     mem [ curlist .tailfield + 1 ] .cint = 10000 ; 
  1113.   } 
  1114.   mem [ curlist .tailfield ] .hh .v.RH = newparamglue ( 14 ) ; 
  1115.   popnest () ; 
  1116.   noshrinkerroryet = true ; 
  1117.   if ( ( mem [ eqtb [ 3789 ] .hh .v.RH ] .hh.b1 != 0 ) && ( mem [ eqtb [ 3789 
  1118.   ] .hh .v.RH + 3 ] .cint != 0 ) ) 
  1119.   {
  1120.     eqtb [ 3789 ] .hh .v.RH = finiteshrink ( eqtb [ 3789 ] .hh .v.RH ) ; 
  1121.   } 
  1122.   if ( ( mem [ eqtb [ 3790 ] .hh .v.RH ] .hh.b1 != 0 ) && ( mem [ eqtb [ 3790 
  1123.   ] .hh .v.RH + 3 ] .cint != 0 ) ) 
  1124.   {
  1125.     eqtb [ 3790 ] .hh .v.RH = finiteshrink ( eqtb [ 3790 ] .hh .v.RH ) ; 
  1126.   } 
  1127.   q = eqtb [ 3789 ] .hh .v.RH ; 
  1128.   r = eqtb [ 3790 ] .hh .v.RH ; 
  1129.   background [ 1 ] = mem [ q + 1 ] .cint + mem [ r + 1 ] .cint ; 
  1130.   background [ 2 ] = 0 ; 
  1131.   background [ 3 ] = 0 ; 
  1132.   background [ 4 ] = 0 ; 
  1133.   background [ 5 ] = 0 ; 
  1134.   background [ 2 + mem [ q ] .hh.b0 ] = mem [ q + 2 ] .cint ; 
  1135.   background [ 2 + mem [ r ] .hh.b0 ] = background [ 2 + mem [ r ] .hh.b0 ] + 
  1136.   mem [ r + 2 ] .cint ; 
  1137.   background [ 6 ] = mem [ q + 3 ] .cint + mem [ r + 3 ] .cint ; 
  1138.   minimumdemerits = 1073741823L ; 
  1139.   minimaldemerits [ 3 ] = 1073741823L ; 
  1140.   minimaldemerits [ 2 ] = 1073741823L ; 
  1141.   minimaldemerits [ 1 ] = 1073741823L ; 
  1142.   minimaldemerits [ 0 ] = 1073741823L ; 
  1143.   if ( eqtb [ 4312 ] .hh .v.RH == 0 ) 
  1144.   if ( eqtb [ 6747 ] .cint == 0 ) 
  1145.   {
  1146.     lastspecialline = 0 ; 
  1147.     secondwidth = eqtb [ 6733 ] .cint ; 
  1148.     secondindent = 0 ; 
  1149.   } 
  1150.   else {
  1151.       
  1152.     lastspecialline = abs ( eqtb [ 6204 ] .cint ) ; 
  1153.     if ( eqtb [ 6204 ] .cint < 0 ) 
  1154.     {
  1155.       firstwidth = eqtb [ 6733 ] .cint - abs ( eqtb [ 6747 ] .cint ) ; 
  1156.       if ( eqtb [ 6747 ] .cint >= 0 ) 
  1157.       firstindent = eqtb [ 6747 ] .cint ; 
  1158.       else firstindent = 0 ; 
  1159.       secondwidth = eqtb [ 6733 ] .cint ; 
  1160.       secondindent = 0 ; 
  1161.     } 
  1162.     else {
  1163.     
  1164.       firstwidth = eqtb [ 6733 ] .cint ; 
  1165.       firstindent = 0 ; 
  1166.       secondwidth = eqtb [ 6733 ] .cint - abs ( eqtb [ 6747 ] .cint ) ; 
  1167.       if ( eqtb [ 6747 ] .cint >= 0 ) 
  1168.       secondindent = eqtb [ 6747 ] .cint ; 
  1169.       else secondindent = 0 ; 
  1170.     } 
  1171.   } 
  1172.   else {
  1173.       
  1174.     lastspecialline = mem [ eqtb [ 4312 ] .hh .v.RH ] .hh .v.LH - 1 ; 
  1175.     secondwidth = mem [ eqtb [ 4312 ] .hh .v.RH + 2 * ( lastspecialline + 1 ) 
  1176.     ] .cint ; 
  1177.     secondindent = mem [ eqtb [ 4312 ] .hh .v.RH + 2 * lastspecialline + 1 ] 
  1178.     .cint ; 
  1179.   } 
  1180.   if ( eqtb [ 6182 ] .cint == 0 ) 
  1181.   easyline = lastspecialline ; 
  1182.   else easyline = 65535L ; 
  1183.   threshold = eqtb [ 6163 ] .cint ; 
  1184.   if ( threshold >= 0 ) 
  1185.   {
  1186.     ;
  1187. #ifdef STAT
  1188.     if ( eqtb [ 6195 ] .cint > 0 ) 
  1189.     {
  1190.       begindiagnostic () ; 
  1191.       printnl ( 926 ) ; 
  1192.     } 
  1193. #endif /* STAT */
  1194.     secondpass = false ; 
  1195.     finalpass = false ; 
  1196.   } 
  1197.   else {
  1198.       
  1199.     threshold = eqtb [ 6164 ] .cint ; 
  1200.     secondpass = true ; 
  1201.     finalpass = ( eqtb [ 6750 ] .cint <= 0 ) ; 
  1202.     ;
  1203. #ifdef STAT
  1204.     if ( eqtb [ 6195 ] .cint > 0 ) 
  1205.     begindiagnostic () ; 
  1206. #endif /* STAT */
  1207.   } 
  1208.   while ( true ) {
  1209.       
  1210.     if ( threshold > 10000 ) 
  1211.     threshold = 10000 ; 
  1212.     if ( secondpass ) 
  1213.     {
  1214.     ;
  1215. #ifdef INITEX
  1216.       if ( trienotready ) 
  1217.       inittrie () ; 
  1218. #endif /* INITEX */
  1219.       lhyf = curlist .lhmfield ; 
  1220.       rhyf = curlist .rhmfield ; 
  1221.       curlang = 0 ; 
  1222.     } 
  1223.     q = getnode ( 3 ) ; 
  1224.     mem [ q ] .hh.b0 = 0 ; 
  1225.     mem [ q ] .hh.b1 = 2 ; 
  1226.     mem [ q ] .hh .v.RH = memtop - 7 ; 
  1227.     mem [ q + 1 ] .hh .v.RH = 0 ; 
  1228.     mem [ q + 1 ] .hh .v.LH = curlist .pgfield + 1 ; 
  1229.     mem [ q + 2 ] .cint = 0 ; 
  1230.     mem [ memtop - 7 ] .hh .v.RH = q ; 
  1231.     activewidth [ 1 ] = background [ 1 ] ; 
  1232.     activewidth [ 2 ] = background [ 2 ] ; 
  1233.     activewidth [ 3 ] = background [ 3 ] ; 
  1234.     activewidth [ 4 ] = background [ 4 ] ; 
  1235.     activewidth [ 5 ] = background [ 5 ] ; 
  1236.     activewidth [ 6 ] = background [ 6 ] ; 
  1237.     passive = 0 ; 
  1238.     printednode = memtop - 3 ; 
  1239.     passnumber = 0 ; 
  1240.     fontinshortdisplay = 0 ; 
  1241.     curp = mem [ memtop - 3 ] .hh .v.RH ; 
  1242.     autobreaking = true ; 
  1243.     prevp = curp ; 
  1244.     while ( ( curp != 0 ) && ( mem [ memtop - 7 ] .hh .v.RH != memtop - 7 ) ) 
  1245.     {
  1246.       if ( ( curp >= himemmin ) ) 
  1247.       {
  1248.     prevp = curp ; 
  1249.     do {
  1250.         f = mem [ curp ] .hh.b0 ; 
  1251.       activewidth [ 1 ] = activewidth [ 1 ] + fontinfo [ widthbase [ f ] + 
  1252.       fontinfo [ charbase [ f ] + mem [ curp ] .hh.b1 ] .qqqq .b0 ] .cint 
  1253.       ; 
  1254.       curp = mem [ curp ] .hh .v.RH ; 
  1255.     } while ( ! ( ! ( curp >= himemmin ) ) ) ; 
  1256.       } 
  1257.       switch ( mem [ curp ] .hh.b0 ) 
  1258.       {case 0 : 
  1259.       case 1 : 
  1260.       case 2 : 
  1261.     activewidth [ 1 ] = activewidth [ 1 ] + mem [ curp + 1 ] .cint ; 
  1262.     break ; 
  1263.       case 8 : 
  1264.     if ( mem [ curp ] .hh.b1 == 4 ) 
  1265.     {
  1266.       curlang = mem [ curp + 1 ] .hh .v.RH ; 
  1267.       lhyf = mem [ curp + 1 ] .hh.b0 ; 
  1268.       rhyf = mem [ curp + 1 ] .hh.b1 ; 
  1269.     } 
  1270.     break ; 
  1271.       case 10 : 
  1272.     {
  1273.       if ( autobreaking ) 
  1274.       {
  1275.         if ( ( prevp >= himemmin ) ) 
  1276.         trybreak ( 0 , 0 ) ; 
  1277.         else if ( ( mem [ prevp ] .hh.b0 < 9 ) ) 
  1278.         trybreak ( 0 , 0 ) ; 
  1279.       } 
  1280.       if ( ( mem [ mem [ curp + 1 ] .hh .v.LH ] .hh.b1 != 0 ) && ( mem [ 
  1281.       mem [ curp + 1 ] .hh .v.LH + 3 ] .cint != 0 ) ) 
  1282.       {
  1283.         mem [ curp + 1 ] .hh .v.LH = finiteshrink ( mem [ curp + 1 ] .hh 
  1284.         .v.LH ) ; 
  1285.       } 
  1286.       q = mem [ curp + 1 ] .hh .v.LH ; 
  1287.       activewidth [ 1 ] = activewidth [ 1 ] + mem [ q + 1 ] .cint ; 
  1288.       activewidth [ 2 + mem [ q ] .hh.b0 ] = activewidth [ 2 + mem [ q ] 
  1289.       .hh.b0 ] + mem [ q + 2 ] .cint ; 
  1290.       activewidth [ 6 ] = activewidth [ 6 ] + mem [ q + 3 ] .cint ; 
  1291.       if ( secondpass && autobreaking ) 
  1292.       {
  1293.         prevs = curp ; 
  1294.         s = mem [ prevs ] .hh .v.RH ; 
  1295.         if ( s != 0 ) 
  1296.         {
  1297.           while ( true ) {
  1298.           
  1299.         if ( ( s >= himemmin ) ) 
  1300.         {
  1301.           c = mem [ s ] .hh.b1 ; 
  1302.           hf = mem [ s ] .hh.b0 ; 
  1303.         } 
  1304.         else if ( mem [ s ] .hh.b0 == 6 ) 
  1305.         if ( mem [ s + 1 ] .hh .v.RH == 0 ) 
  1306.         goto lab22 ; 
  1307.         else {
  1308.             
  1309.           q = mem [ s + 1 ] .hh .v.RH ; 
  1310.           c = mem [ q ] .hh.b1 ; 
  1311.           hf = mem [ q ] .hh.b0 ; 
  1312.         } 
  1313.         else if ( ( mem [ s ] .hh.b0 == 11 ) && ( mem [ s ] .hh.b1 == 
  1314.         0 ) ) 
  1315.         goto lab22 ; 
  1316.         else if ( mem [ s ] .hh.b0 == 8 ) 
  1317.         {
  1318.           if ( mem [ s ] .hh.b1 == 4 ) 
  1319.           {
  1320.             curlang = mem [ s + 1 ] .hh .v.RH ; 
  1321.             lhyf = mem [ s + 1 ] .hh.b0 ; 
  1322.             rhyf = mem [ s + 1 ] .hh.b1 ; 
  1323.           } 
  1324.           goto lab22 ; 
  1325.         } 
  1326.         else goto lab31 ; 
  1327.         if ( eqtb [ 5139 + c ] .hh .v.RH != 0 ) 
  1328.         if ( ( eqtb [ 5139 + c ] .hh .v.RH == c ) || ( eqtb [ 6201 ] 
  1329.         .cint > 0 ) ) 
  1330.         goto lab32 ; 
  1331.         else goto lab31 ; 
  1332.         lab22: prevs = s ; 
  1333.         s = mem [ prevs ] .hh .v.RH ; 
  1334.           } 
  1335.           lab32: hyfchar = hyphenchar [ hf ] ; 
  1336.           if ( hyfchar < 0 ) 
  1337.           goto lab31 ; 
  1338.           if ( hyfchar > 255 ) 
  1339.           goto lab31 ; 
  1340.           ha = prevs ; 
  1341.           if ( lhyf + rhyf > 63 ) 
  1342.           goto lab31 ; 
  1343.           hn = 0 ; 
  1344.           while ( true ) {
  1345.           
  1346.         if ( ( s >= himemmin ) ) 
  1347.         {
  1348.           if ( mem [ s ] .hh.b0 != hf ) 
  1349.           goto lab33 ; 
  1350.           c = mem [ s ] .hh.b1 ; 
  1351.           if ( eqtb [ 5139 + c ] .hh .v.RH == 0 ) 
  1352.           goto lab33 ; 
  1353.           if ( hn == 63 ) 
  1354.           goto lab33 ; 
  1355.           hb = s ; 
  1356.           incr ( hn ) ; 
  1357.           hu [ hn ] = c ; 
  1358.           hc [ hn ] = eqtb [ 5139 + c ] .hh .v.RH ; 
  1359.         } 
  1360.         else if ( mem [ s ] .hh.b0 == 6 ) 
  1361.         {
  1362.           if ( mem [ s + 1 ] .hh.b0 != hf ) 
  1363.           goto lab33 ; 
  1364.           j = hn ; 
  1365.           q = mem [ s + 1 ] .hh .v.RH ; 
  1366.           while ( q > 0 ) {
  1367.               
  1368.             c = mem [ q ] .hh.b1 ; 
  1369.             if ( eqtb [ 5139 + c ] .hh .v.RH == 0 ) 
  1370.             goto lab33 ; 
  1371.             if ( j == 63 ) 
  1372.             goto lab33 ; 
  1373.             incr ( j ) ; 
  1374.             hu [ j ] = c ; 
  1375.             hc [ j ] = eqtb [ 5139 + c ] .hh .v.RH ; 
  1376.             q = mem [ q ] .hh .v.RH ; 
  1377.           } 
  1378.           hb = s ; 
  1379.           hn = j ; 
  1380.         } 
  1381.         else if ( ( mem [ s ] .hh.b0 != 11 ) || ( mem [ s ] .hh.b1 != 
  1382.         0 ) ) 
  1383.         goto lab33 ; 
  1384.         s = mem [ s ] .hh .v.RH ; 
  1385.           } 
  1386.           lab33: ; 
  1387.           if ( hn < lhyf + rhyf ) 
  1388.           goto lab31 ; 
  1389.           while ( true ) {
  1390.           
  1391.         if ( ! ( ( s >= himemmin ) ) ) 
  1392.         switch ( mem [ s ] .hh.b0 ) 
  1393.         {case 6 : 
  1394.           ; 
  1395.           break ; 
  1396.         case 11 : 
  1397.           if ( mem [ s ] .hh.b1 != 0 ) 
  1398.           goto lab34 ; 
  1399.           break ; 
  1400.         case 8 : 
  1401.         case 10 : 
  1402.         case 12 : 
  1403.         case 3 : 
  1404.         case 5 : 
  1405.         case 4 : 
  1406.           goto lab34 ; 
  1407.           break ; 
  1408.           default: 
  1409.           goto lab31 ; 
  1410.           break ; 
  1411.         } 
  1412.         s = mem [ s ] .hh .v.RH ; 
  1413.           } 
  1414.           lab34: ; 
  1415.           hyphenate () ; 
  1416.         } 
  1417.         lab31: ; 
  1418.       } 
  1419.     } 
  1420.     break ; 
  1421.       case 11 : 
  1422.     {
  1423.       if ( ! ( mem [ curp ] .hh .v.RH >= himemmin ) && autobreaking ) 
  1424.       if ( mem [ mem [ curp ] .hh .v.RH ] .hh.b0 == 10 ) 
  1425.       trybreak ( 0 , 0 ) ; 
  1426.       activewidth [ 1 ] = activewidth [ 1 ] + mem [ curp + 1 ] .cint ; 
  1427.     } 
  1428.     break ; 
  1429.       case 6 : 
  1430.     {
  1431.       f = mem [ curp + 1 ] .hh.b0 ; 
  1432.       activewidth [ 1 ] = activewidth [ 1 ] + fontinfo [ widthbase [ f ] + 
  1433.       fontinfo [ charbase [ f ] + mem [ curp + 1 ] .hh.b1 ] .qqqq .b0 ] 
  1434.       .cint ; 
  1435.     } 
  1436.     break ; 
  1437.       case 7 : 
  1438.     {
  1439.       s = mem [ curp + 1 ] .hh .v.LH ; 
  1440.       discwidth = 0 ; 
  1441.       if ( s == 0 ) 
  1442.       trybreak ( eqtb [ 6167 ] .cint , 1 ) ; 
  1443.       else {
  1444.           
  1445.         do {
  1446.         if ( ( s >= himemmin ) ) 
  1447.           {
  1448.         f = mem [ s ] .hh.b0 ; 
  1449.         discwidth = discwidth + fontinfo [ widthbase [ f ] + fontinfo 
  1450.         [ charbase [ f ] + mem [ s ] .hh.b1 ] .qqqq .b0 ] .cint ; 
  1451.           } 
  1452.           else switch ( mem [ s ] .hh.b0 ) 
  1453.           {case 6 : 
  1454.         {
  1455.           f = mem [ s + 1 ] .hh.b0 ; 
  1456.           discwidth = discwidth + fontinfo [ widthbase [ f ] + 
  1457.           fontinfo [ charbase [ f ] + mem [ s + 1 ] .hh.b1 ] .qqqq .b0 
  1458.           ] .cint ; 
  1459.         } 
  1460.         break ; 
  1461.           case 0 : 
  1462.           case 1 : 
  1463.           case 2 : 
  1464.           case 11 : 
  1465.         discwidth = discwidth + mem [ s + 1 ] .cint ; 
  1466.         break ; 
  1467.         default: 
  1468.         confusion ( 930 ) ; 
  1469.         break ; 
  1470.           } 
  1471.           s = mem [ s ] .hh .v.RH ; 
  1472.         } while ( ! ( s == 0 ) ) ; 
  1473.         activewidth [ 1 ] = activewidth [ 1 ] + discwidth ; 
  1474.         trybreak ( eqtb [ 6166 ] .cint , 1 ) ; 
  1475.         activewidth [ 1 ] = activewidth [ 1 ] - discwidth ; 
  1476.       } 
  1477.       r = mem [ curp ] .hh.b1 ; 
  1478.       s = mem [ curp ] .hh .v.RH ; 
  1479.       while ( r > 0 ) {
  1480.           
  1481.         if ( ( s >= himemmin ) ) 
  1482.         {
  1483.           f = mem [ s ] .hh.b0 ; 
  1484.           activewidth [ 1 ] = activewidth [ 1 ] + fontinfo [ widthbase [ f 
  1485.           ] + fontinfo [ charbase [ f ] + mem [ s ] .hh.b1 ] .qqqq .b0 ] 
  1486.           .cint ; 
  1487.         } 
  1488.         else switch ( mem [ s ] .hh.b0 ) 
  1489.         {case 6 : 
  1490.           {
  1491.         f = mem [ s + 1 ] .hh.b0 ; 
  1492.         activewidth [ 1 ] = activewidth [ 1 ] + fontinfo [ widthbase [ 
  1493.         f ] + fontinfo [ charbase [ f ] + mem [ s + 1 ] .hh.b1 ] .qqqq 
  1494.         .b0 ] .cint ; 
  1495.           } 
  1496.           break ; 
  1497.         case 0 : 
  1498.         case 1 : 
  1499.         case 2 : 
  1500.         case 11 : 
  1501.           activewidth [ 1 ] = activewidth [ 1 ] + mem [ s + 1 ] .cint ; 
  1502.           break ; 
  1503.           default: 
  1504.           confusion ( 931 ) ; 
  1505.           break ; 
  1506.         } 
  1507.         decr ( r ) ; 
  1508.         s = mem [ s ] .hh .v.RH ; 
  1509.       } 
  1510.       prevp = curp ; 
  1511.       curp = s ; 
  1512.       goto lab35 ; 
  1513.     } 
  1514.     break ; 
  1515.       case 9 : 
  1516.     {
  1517.       autobreaking = ( mem [ curp ] .hh.b1 == 1 ) ; 
  1518.       {
  1519.         if ( ! ( mem [ curp ] .hh .v.RH >= himemmin ) && autobreaking ) 
  1520.         if ( mem [ mem [ curp ] .hh .v.RH ] .hh.b0 == 10 ) 
  1521.         trybreak ( 0 , 0 ) ; 
  1522.         activewidth [ 1 ] = activewidth [ 1 ] + mem [ curp + 1 ] .cint ; 
  1523.       } 
  1524.     } 
  1525.     break ; 
  1526.       case 12 : 
  1527.     trybreak ( mem [ curp + 1 ] .cint , 0 ) ; 
  1528.     break ; 
  1529.       case 4 : 
  1530.       case 3 : 
  1531.       case 5 : 
  1532.     ; 
  1533.     break ; 
  1534.     default: 
  1535.     confusion ( 929 ) ; 
  1536.     break ; 
  1537.       } 
  1538.       prevp = curp ; 
  1539.       curp = mem [ curp ] .hh .v.RH ; 
  1540.       lab35: ; 
  1541.     } 
  1542.     if ( curp == 0 ) 
  1543.     {
  1544.       trybreak ( -10000 , 1 ) ; 
  1545.       if ( mem [ memtop - 7 ] .hh .v.RH != memtop - 7 ) 
  1546.       {
  1547.     r = mem [ memtop - 7 ] .hh .v.RH ; 
  1548.     fewestdemerits = 1073741823L ; 
  1549.     do {
  1550.         if ( mem [ r ] .hh.b0 != 2 ) 
  1551.       if ( mem [ r + 2 ] .cint < fewestdemerits ) 
  1552.       {
  1553.         fewestdemerits = mem [ r + 2 ] .cint ; 
  1554.         bestbet = r ; 
  1555.       } 
  1556.       r = mem [ r ] .hh .v.RH ; 
  1557.     } while ( ! ( r == memtop - 7 ) ) ; 
  1558.     bestline = mem [ bestbet + 1 ] .hh .v.LH ; 
  1559.     if ( eqtb [ 6182 ] .cint == 0 ) 
  1560.     goto lab30 ; 
  1561.     {
  1562.       r = mem [ memtop - 7 ] .hh .v.RH ; 
  1563.       actuallooseness = 0 ; 
  1564.       do {
  1565.           if ( mem [ r ] .hh.b0 != 2 ) 
  1566.         {
  1567.           linediff = toint ( mem [ r + 1 ] .hh .v.LH ) - toint ( bestline 
  1568.           ) ; 
  1569.           if ( ( ( linediff < actuallooseness ) && ( eqtb [ 6182 ] .cint 
  1570.           <= linediff ) ) || ( ( linediff > actuallooseness ) && ( eqtb [ 
  1571.           6182 ] .cint >= linediff ) ) ) 
  1572.           {
  1573.         bestbet = r ; 
  1574.         actuallooseness = linediff ; 
  1575.         fewestdemerits = mem [ r + 2 ] .cint ; 
  1576.           } 
  1577.           else if ( ( linediff == actuallooseness ) && ( mem [ r + 2 ] 
  1578.           .cint < fewestdemerits ) ) 
  1579.           {
  1580.         bestbet = r ; 
  1581.         fewestdemerits = mem [ r + 2 ] .cint ; 
  1582.           } 
  1583.         } 
  1584.         r = mem [ r ] .hh .v.RH ; 
  1585.       } while ( ! ( r == memtop - 7 ) ) ; 
  1586.       bestline = mem [ bestbet + 1 ] .hh .v.LH ; 
  1587.     } 
  1588.     if ( ( actuallooseness == eqtb [ 6182 ] .cint ) || finalpass ) 
  1589.     goto lab30 ; 
  1590.       } 
  1591.     } 
  1592.     q = mem [ memtop - 7 ] .hh .v.RH ; 
  1593.     while ( q != memtop - 7 ) {
  1594.     
  1595.       curp = mem [ q ] .hh .v.RH ; 
  1596.       if ( mem [ q ] .hh.b0 == 2 ) 
  1597.       freenode ( q , 7 ) ; 
  1598.       else freenode ( q , 3 ) ; 
  1599.       q = curp ; 
  1600.     } 
  1601.     q = passive ; 
  1602.     while ( q != 0 ) {
  1603.     
  1604.       curp = mem [ q ] .hh .v.RH ; 
  1605.       freenode ( q , 2 ) ; 
  1606.       q = curp ; 
  1607.     } 
  1608.     if ( ! secondpass ) 
  1609.     {
  1610.     ;
  1611. #ifdef STAT
  1612.       if ( eqtb [ 6195 ] .cint > 0 ) 
  1613.       printnl ( 927 ) ; 
  1614. #endif /* STAT */
  1615.       threshold = eqtb [ 6164 ] .cint ; 
  1616.       secondpass = true ; 
  1617.       finalpass = ( eqtb [ 6750 ] .cint <= 0 ) ; 
  1618.     } 
  1619.     else {
  1620.     
  1621.     ;
  1622. #ifdef STAT
  1623.       if ( eqtb [ 6195 ] .cint > 0 ) 
  1624.       printnl ( 928 ) ; 
  1625. #endif /* STAT */
  1626.       background [ 2 ] = background [ 2 ] + eqtb [ 6750 ] .cint ; 
  1627.       finalpass = true ; 
  1628.     } 
  1629.   } 
  1630.   lab30: 
  1631.     ;
  1632. #ifdef STAT
  1633.   if ( eqtb [ 6195 ] .cint > 0 ) 
  1634.   {
  1635.     enddiagnostic ( true ) ; 
  1636.     normalizeselector () ; 
  1637.   } 
  1638. #endif /* STAT */
  1639.   postlinebreak ( finalwidowpenalty ) ; 
  1640.   q = mem [ memtop - 7 ] .hh .v.RH ; 
  1641.   while ( q != memtop - 7 ) {
  1642.       
  1643.     curp = mem [ q ] .hh .v.RH ; 
  1644.     if ( mem [ q ] .hh.b0 == 2 ) 
  1645.     freenode ( q , 7 ) ; 
  1646.     else freenode ( q , 3 ) ; 
  1647.     q = curp ; 
  1648.   } 
  1649.   q = passive ; 
  1650.   while ( q != 0 ) {
  1651.       
  1652.     curp = mem [ q ] .hh .v.RH ; 
  1653.     freenode ( q , 2 ) ; 
  1654.     q = curp ; 
  1655.   } 
  1656.   packbeginline = 0 ; 
  1657. void prefixedcommand ( ) 
  1658. {/* 30 10 */ prefixedcommand_regmem 
  1659.   smallnumber a  ; 
  1660.   internalfontnumber f  ; 
  1661.   halfword j  ; 
  1662.   fontindex k  ; 
  1663.   halfword p, q  ; 
  1664.   integer n  ; 
  1665.   boolean e  ; 
  1666.   a = 0 ; 
  1667.   while ( curcmd == 93 ) {
  1668.       
  1669.     if ( ! odd ( a / curchr ) ) 
  1670.     a = a + curchr ; 
  1671.     do {
  1672.     getxtoken () ; 
  1673.     } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; 
  1674.     if ( curcmd <= 70 ) 
  1675.     {
  1676.       {
  1677.     if ( interaction == 3 ) 
  1678.     wakeupterminal () ; 
  1679.     printnl ( 262 ) ; 
  1680.     print ( 1172 ) ; 
  1681.       } 
  1682.       printcmdchr ( curcmd , curchr ) ; 
  1683.       printchar ( 39 ) ; 
  1684.       {
  1685.     helpptr = 1 ; 
  1686.     helpline [ 0 ] = 1173 ; 
  1687.       } 
  1688.       backerror () ; 
  1689.       return ; 
  1690.     } 
  1691.   } 
  1692.   if ( ( curcmd != 97 ) && ( a % 4 != 0 ) ) 
  1693.   {
  1694.     {
  1695.       if ( interaction == 3 ) 
  1696.       wakeupterminal () ; 
  1697.       printnl ( 262 ) ; 
  1698.       print ( 681 ) ; 
  1699.     } 
  1700.     printesc ( 1164 ) ; 
  1701.     print ( 1174 ) ; 
  1702.     printesc ( 1165 ) ; 
  1703.     print ( 1175 ) ; 
  1704.     printcmdchr ( curcmd , curchr ) ; 
  1705.     printchar ( 39 ) ; 
  1706.     {
  1707.       helpptr = 1 ; 
  1708.       helpline [ 0 ] = 1176 ; 
  1709.     } 
  1710.     error () ; 
  1711.   } 
  1712.   if ( eqtb [ 6206 ] .cint != 0 ) 
  1713.   if ( eqtb [ 6206 ] .cint < 0 ) 
  1714.   {
  1715.     if ( ( a >= 4 ) ) 
  1716.     a = a - 4 ; 
  1717.   } 
  1718.   else {
  1719.       
  1720.     if ( ! ( a >= 4 ) ) 
  1721.     a = a + 4 ; 
  1722.   } 
  1723.   switch ( curcmd ) 
  1724.   {case 87 : 
  1725.     if ( ( a >= 4 ) ) 
  1726.     geqdefine ( 4834 , 120 , curchr ) ; 
  1727.     else eqdefine ( 4834 , 120 , curchr ) ; 
  1728.     break ; 
  1729.   case 97 : 
  1730.     {
  1731.       if ( odd ( curchr ) && ! ( a >= 4 ) && ( eqtb [ 6206 ] .cint >= 0 ) ) 
  1732.       a = a + 4 ; 
  1733.       e = ( curchr >= 2 ) ; 
  1734.       getrtoken () ; 
  1735.       p = curcs ; 
  1736.       q = scantoks ( true , e ) ; 
  1737.       if ( ( a >= 4 ) ) 
  1738.       geqdefine ( p , 111 + ( a % 4 ) , defref ) ; 
  1739.       else eqdefine ( p , 111 + ( a % 4 ) , defref ) ; 
  1740.     } 
  1741.     break ; 
  1742.   case 94 : 
  1743.     {
  1744.       n = curchr ; 
  1745.       getrtoken () ; 
  1746.       p = curcs ; 
  1747.       if ( n == 0 ) 
  1748.       {
  1749.     do {
  1750.         gettoken () ; 
  1751.     } while ( ! ( curcmd != 10 ) ) ; 
  1752.     if ( curtok == 3133 ) 
  1753.     {
  1754.       gettoken () ; 
  1755.       if ( curcmd == 10 ) 
  1756.       gettoken () ; 
  1757.     } 
  1758.       } 
  1759.       else {
  1760.       
  1761.     gettoken () ; 
  1762.     q = curtok ; 
  1763.     gettoken () ; 
  1764.     backinput () ; 
  1765.     curtok = q ; 
  1766.     backinput () ; 
  1767.       } 
  1768.       if ( curcmd >= 111 ) 
  1769.       incr ( mem [ curchr ] .hh .v.LH ) ; 
  1770.       if ( ( a >= 4 ) ) 
  1771.       geqdefine ( p , curcmd , curchr ) ; 
  1772.       else eqdefine ( p , curcmd , curchr ) ; 
  1773.     } 
  1774.     break ; 
  1775.   case 95 : 
  1776.     {
  1777.       n = curchr ; 
  1778.       getrtoken () ; 
  1779.       p = curcs ; 
  1780.       if ( ( a >= 4 ) ) 
  1781.       geqdefine ( p , 0 , 256 ) ; 
  1782.       else eqdefine ( p , 0 , 256 ) ; 
  1783.       scanoptionalequals () ; 
  1784.       switch ( n ) 
  1785.       {case 0 : 
  1786.     {
  1787.       scancharnum () ; 
  1788.       if ( ( a >= 4 ) ) 
  1789.       geqdefine ( p , 68 , curval ) ; 
  1790.       else eqdefine ( p , 68 , curval ) ; 
  1791.     } 
  1792.     break ; 
  1793.       case 1 : 
  1794.     {
  1795.       scanfifteenbitint () ; 
  1796.       if ( ( a >= 4 ) ) 
  1797.       geqdefine ( p , 69 , curval ) ; 
  1798.       else eqdefine ( p , 69 , curval ) ; 
  1799.     } 
  1800.     break ; 
  1801.     default: 
  1802.     {
  1803.       scaneightbitint () ; 
  1804.       switch ( n ) 
  1805.       {case 2 : 
  1806.         if ( ( a >= 4 ) ) 
  1807.         geqdefine ( p , 73 , 6218 + curval ) ; 
  1808.         else eqdefine ( p , 73 , 6218 + curval ) ; 
  1809.         break ; 
  1810.       case 3 : 
  1811.         if ( ( a >= 4 ) ) 
  1812.         geqdefine ( p , 74 , 6751 + curval ) ; 
  1813.         else eqdefine ( p , 74 , 6751 + curval ) ; 
  1814.         break ; 
  1815.       case 4 : 
  1816.         if ( ( a >= 4 ) ) 
  1817.         geqdefine ( p , 75 , 3800 + curval ) ; 
  1818.         else eqdefine ( p , 75 , 3800 + curval ) ; 
  1819.         break ; 
  1820.       case 5 : 
  1821.         if ( ( a >= 4 ) ) 
  1822.         geqdefine ( p , 76 , 4056 + curval ) ; 
  1823.         else eqdefine ( p , 76 , 4056 + curval ) ; 
  1824.         break ; 
  1825.       case 6 : 
  1826.         if ( ( a >= 4 ) ) 
  1827.         geqdefine ( p , 72 , 4322 + curval ) ; 
  1828.         else eqdefine ( p , 72 , 4322 + curval ) ; 
  1829.         break ; 
  1830.       } 
  1831.     } 
  1832.     break ; 
  1833.       } 
  1834.     } 
  1835.     break ; 
  1836.   case 96 : 
  1837.     {
  1838.       scanint () ; 
  1839.       n = curval ; 
  1840.       if ( ! scankeyword ( 835 ) ) 
  1841.       {
  1842.     {
  1843.       if ( interaction == 3 ) 
  1844.       wakeupterminal () ; 
  1845.       printnl ( 262 ) ; 
  1846.       print ( 1066 ) ; 
  1847.     } 
  1848.     {
  1849.       helpptr = 2 ; 
  1850.       helpline [ 1 ] = 1193 ; 
  1851.       helpline [ 0 ] = 1194 ; 
  1852.     } 
  1853.     error () ; 
  1854.       } 
  1855.       getrtoken () ; 
  1856.       p = curcs ; 
  1857.       readtoks ( n , p ) ; 
  1858.       if ( ( a >= 4 ) ) 
  1859.       geqdefine ( p , 111 , curval ) ; 
  1860.       else eqdefine ( p , 111 , curval ) ; 
  1861.     } 
  1862.     break ; 
  1863.   case 71 : 
  1864.   case 72 : 
  1865.     {
  1866.       q = curcs ; 
  1867.       if ( curcmd == 71 ) 
  1868.       {
  1869.     scaneightbitint () ; 
  1870.     p = 4322 + curval ; 
  1871.       } 
  1872.       else p = curchr ; 
  1873.       scanoptionalequals () ; 
  1874.       do {
  1875.       getxtoken () ; 
  1876.       } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; 
  1877.       if ( curcmd != 1 ) 
  1878.       {
  1879.     if ( curcmd == 71 ) 
  1880.     {
  1881.       scaneightbitint () ; 
  1882.       curcmd = 72 ; 
  1883.       curchr = 4322 + curval ; 
  1884.     } 
  1885.     if ( curcmd == 72 ) 
  1886.     {
  1887.       q = eqtb [ curchr ] .hh .v.RH ; 
  1888.       if ( q == 0 ) 
  1889.       if ( ( a >= 4 ) ) 
  1890.       geqdefine ( p , 101 , 0 ) ; 
  1891.       else eqdefine ( p , 101 , 0 ) ; 
  1892.       else {
  1893.           
  1894.         incr ( mem [ q ] .hh .v.LH ) ; 
  1895.         if ( ( a >= 4 ) ) 
  1896.         geqdefine ( p , 111 , q ) ; 
  1897.         else eqdefine ( p , 111 , q ) ; 
  1898.       } 
  1899.       goto lab30 ; 
  1900.     } 
  1901.       } 
  1902.       backinput () ; 
  1903.       curcs = q ; 
  1904.       q = scantoks ( false , false ) ; 
  1905.       if ( mem [ defref ] .hh .v.RH == 0 ) 
  1906.       {
  1907.     if ( ( a >= 4 ) ) 
  1908.     geqdefine ( p , 101 , 0 ) ; 
  1909.     else eqdefine ( p , 101 , 0 ) ; 
  1910.     {
  1911.       mem [ defref ] .hh .v.RH = avail ; 
  1912.       avail = defref ; 
  1913.     ;
  1914. #ifdef STAT
  1915.       decr ( dynused ) ; 
  1916. #endif /* STAT */
  1917.     } 
  1918.       } 
  1919.       else {
  1920.       
  1921.     if ( p == 4313 ) 
  1922.     {
  1923.       mem [ q ] .hh .v.RH = getavail () ; 
  1924.       q = mem [ q ] .hh .v.RH ; 
  1925.       mem [ q ] .hh .v.LH = 637 ; 
  1926.       q = getavail () ; 
  1927.       mem [ q ] .hh .v.LH = 379 ; 
  1928.       mem [ q ] .hh .v.RH = mem [ defref ] .hh .v.RH ; 
  1929.       mem [ defref ] .hh .v.RH = q ; 
  1930.     } 
  1931.     if ( ( a >= 4 ) ) 
  1932.     geqdefine ( p , 111 , defref ) ; 
  1933.     else eqdefine ( p , 111 , defref ) ; 
  1934.       } 
  1935.     } 
  1936.     break ; 
  1937.   case 73 : 
  1938.     {
  1939.       p = curchr ; 
  1940.       scanoptionalequals () ; 
  1941.       scanint () ; 
  1942.       if ( ( a >= 4 ) ) 
  1943.       geqworddefine ( p , curval ) ; 
  1944.       else eqworddefine ( p , curval ) ; 
  1945.     } 
  1946.     break ; 
  1947.   case 74 : 
  1948.     {
  1949.       p = curchr ; 
  1950.       scanoptionalequals () ; 
  1951.       scandimen ( false , false , false ) ; 
  1952.       if ( ( a >= 4 ) ) 
  1953.       geqworddefine ( p , curval ) ; 
  1954.       else eqworddefine ( p , curval ) ; 
  1955.     } 
  1956.     break ; 
  1957.   case 75 : 
  1958.   case 76 : 
  1959.     {
  1960.       p = curchr ; 
  1961.       n = curcmd ; 
  1962.       scanoptionalequals () ; 
  1963.       if ( n == 76 ) 
  1964.       scanglue ( 3 ) ; 
  1965.       else scanglue ( 2 ) ; 
  1966.       trapzeroglue () ; 
  1967.       if ( ( a >= 4 ) ) 
  1968.       geqdefine ( p , 117 , curval ) ; 
  1969.       else eqdefine ( p , 117 , curval ) ; 
  1970.     } 
  1971.     break ; 
  1972.   case 85 : 
  1973.     {
  1974.       if ( curchr == 4883 ) 
  1975.       n = 15 ; 
  1976.       else if ( curchr == 5907 ) 
  1977.       n = 32768L ; 
  1978.       else if ( curchr == 5651 ) 
  1979.       n = 32767 ; 
  1980.       else if ( curchr == 6474 ) 
  1981.       n = 16777215L ; 
  1982.       else n = 255 ; 
  1983.       p = curchr ; 
  1984.       scancharnum () ; 
  1985.       p = p + curval ; 
  1986.       scanoptionalequals () ; 
  1987.       scanint () ; 
  1988.       if ( ( ( curval < 0 ) && ( p < 6474 ) ) || ( curval > n ) ) 
  1989.       {
  1990.     {
  1991.       if ( interaction == 3 ) 
  1992.       wakeupterminal () ; 
  1993.       printnl ( 262 ) ; 
  1994.       print ( 1195 ) ; 
  1995.     } 
  1996.     printint ( curval ) ; 
  1997.     if ( p < 6474 ) 
  1998.     print ( 1196 ) ; 
  1999.     else print ( 1197 ) ; 
  2000.     printint ( n ) ; 
  2001.     {
  2002.       helpptr = 1 ; 
  2003.       helpline [ 0 ] = 1198 ; 
  2004.     } 
  2005.     error () ; 
  2006.     curval = 0 ; 
  2007.       } 
  2008.       if ( p < 5907 ) 
  2009.       if ( ( a >= 4 ) ) 
  2010.       geqdefine ( p , 120 , curval ) ; 
  2011.       else eqdefine ( p , 120 , curval ) ; 
  2012.       else if ( p < 6474 ) 
  2013.       if ( ( a >= 4 ) ) 
  2014.       geqdefine ( p , 120 , curval ) ; 
  2015.       else eqdefine ( p , 120 , curval ) ; 
  2016.       else if ( ( a >= 4 ) ) 
  2017.       geqworddefine ( p , curval ) ; 
  2018.       else eqworddefine ( p , curval ) ; 
  2019.     } 
  2020.     break ; 
  2021.   case 86 : 
  2022.     {
  2023.       p = curchr ; 
  2024.       scanfourbitint () ; 
  2025.       p = p + curval ; 
  2026.       scanoptionalequals () ; 
  2027.       scanfontident () ; 
  2028.       if ( ( a >= 4 ) ) 
  2029.       geqdefine ( p , 120 , curval ) ; 
  2030.       else eqdefine ( p , 120 , curval ) ; 
  2031.     } 
  2032.     break ; 
  2033.   case 89 : 
  2034.   case 90 : 
  2035.   case 91 : 
  2036.   case 92 : 
  2037.     doregistercommand ( a ) ; 
  2038.     break ; 
  2039.   case 98 : 
  2040.     {
  2041.       scaneightbitint () ; 
  2042.       if ( ( a >= 4 ) ) 
  2043.       n = 256 + curval ; 
  2044.       else n = curval ; 
  2045.       scanoptionalequals () ; 
  2046.       scanbox ( 1073741824L + n ) ; 
  2047.     } 
  2048.     break ; 
  2049.   case 79 : 
  2050.     alteraux () ; 
  2051.     break ; 
  2052.   case 80 : 
  2053.     alterprevgraf () ; 
  2054.     break ; 
  2055.   case 81 : 
  2056.     alterpagesofar () ; 
  2057.     break ; 
  2058.   case 82 : 
  2059.     alterinteger () ; 
  2060.     break ; 
  2061.   case 83 : 
  2062.     alterboxdimen () ; 
  2063.     break ; 
  2064.   case 84 : 
  2065.     {
  2066.       scanoptionalequals () ; 
  2067.       scanint () ; 
  2068.       n = curval ; 
  2069.       if ( n <= 0 ) 
  2070.       p = 0 ; 
  2071.       else {
  2072.       
  2073.     p = getnode ( 2 * n + 1 ) ; 
  2074.     mem [ p ] .hh .v.LH = n ; 
  2075.     {register integer for_end; j = 1 ; for_end = n ; if ( j <= for_end) 
  2076.     do 
  2077.       {
  2078.         scandimen ( false , false , false ) ; 
  2079.         mem [ p + 2 * j - 1 ] .cint = curval ; 
  2080.         scandimen ( false , false , false ) ; 
  2081.         mem [ p + 2 * j ] .cint = curval ; 
  2082.       } 
  2083.     while ( j++ < for_end ) ; } 
  2084.       } 
  2085.       if ( ( a >= 4 ) ) 
  2086.       geqdefine ( 4312 , 118 , p ) ; 
  2087.       else eqdefine ( 4312 , 118 , p ) ; 
  2088.     } 
  2089.     break ; 
  2090.   case 99 : 
  2091.     if ( curchr == 1 ) 
  2092.     {
  2093.     ;
  2094. #ifdef INITEX
  2095.       newpatterns () ; 
  2096.       goto lab30 ; 
  2097. #endif /* INITEX */
  2098.       {
  2099.     if ( interaction == 3 ) 
  2100.     wakeupterminal () ; 
  2101.     printnl ( 262 ) ; 
  2102.     print ( 1207 ) ; 
  2103.       } 
  2104.       helpptr = 0 ; 
  2105.       error () ; 
  2106.       do {
  2107.       gettoken () ; 
  2108.       } while ( ! ( curcmd == 2 ) ) ; 
  2109.       return ; 
  2110.     } 
  2111.     else {
  2112.     
  2113.       newhyphexceptions () ; 
  2114.       goto lab30 ; 
  2115.     } 
  2116.     break ; 
  2117.   case 77 : 
  2118.     {
  2119.       findfontdimen ( true ) ; 
  2120.       k = curval ; 
  2121.       scanoptionalequals () ; 
  2122.       scandimen ( false , false , false ) ; 
  2123.       fontinfo [ k ] .cint = curval ; 
  2124.     } 
  2125.     break ; 
  2126.   case 78 : 
  2127.     {
  2128.       n = curchr ; 
  2129.       scanfontident () ; 
  2130.       f = curval ; 
  2131.       scanoptionalequals () ; 
  2132.       scanint () ; 
  2133.       if ( n == 0 ) 
  2134.       hyphenchar [ f ] = curval ; 
  2135.       else skewchar [ f ] = curval ; 
  2136.     } 
  2137.     break ; 
  2138.   case 88 : 
  2139.     newfont ( a ) ; 
  2140.     break ; 
  2141.   case 100 : 
  2142.     newinteraction () ; 
  2143.     break ; 
  2144.     default: 
  2145.     confusion ( 1171 ) ; 
  2146.     break ; 
  2147.   } 
  2148.   lab30: if ( aftertoken != 0 ) 
  2149.   {
  2150.     curtok = aftertoken ; 
  2151.     backinput () ; 
  2152.     aftertoken = 0 ; 
  2153.   } 
  2154. #ifdef INITEX
  2155. void storefmtfile ( ) 
  2156. {/* 41 42 31 32 */ storefmtfile_regmem 
  2157.   integer j, k, l  ; 
  2158.   halfword p, q  ; 
  2159.   integer x  ; 
  2160.   if ( saveptr != 0 ) 
  2161.   {
  2162.     {
  2163.       if ( interaction == 3 ) 
  2164.       wakeupterminal () ; 
  2165.       printnl ( 262 ) ; 
  2166.       print ( 1249 ) ; 
  2167.     } 
  2168.     {
  2169.       helpptr = 1 ; 
  2170.       helpline [ 0 ] = 1250 ; 
  2171.     } 
  2172.     {
  2173.       if ( interaction == 3 ) 
  2174.       interaction = 2 ; 
  2175.       if ( logopened ) 
  2176.       error () ; 
  2177.     ;
  2178. #ifdef DEBUG
  2179.       if ( interaction > 0 ) 
  2180.       debughelp () ; 
  2181. #endif /* DEBUG */
  2182.       history = 3 ; 
  2183.       jumpout () ; 
  2184.     } 
  2185.   } 
  2186.   selector = 21 ; 
  2187.   print ( 1263 ) ; 
  2188.   print ( jobname ) ; 
  2189.   printchar ( 32 ) ; 
  2190.   printint ( eqtb [ 6186 ] .cint % 100 ) ; 
  2191.   printchar ( 46 ) ; 
  2192.   printint ( eqtb [ 6185 ] .cint ) ; 
  2193.   printchar ( 46 ) ; 
  2194.   printint ( eqtb [ 6184 ] .cint ) ; 
  2195.   printchar ( 41 ) ; 
  2196.   if ( interaction == 0 ) 
  2197.   selector = 18 ; 
  2198.   else selector = 19 ; 
  2199.   {
  2200.     if ( poolptr + 1 > poolsize ) 
  2201.     overflow ( 257 , poolsize - initpoolptr ) ; 
  2202.   } 
  2203.   formatident = makestring () ; 
  2204.   packjobname ( 779 ) ; 
  2205.   while ( ! wopenout ( fmtfile ) ) promptfilename ( 1264 , 779 ) ; 
  2206.   printnl ( 1265 ) ; 
  2207.   print ( wmakenamestring ( fmtfile ) ) ; 
  2208.   {
  2209.     decr ( strptr ) ; 
  2210.     poolptr = strstart [ strptr ] ; 
  2211.   } 
  2212.   printnl ( formatident ) ; 
  2213.   dumpint ( 127541235L ) ; 
  2214.   dumpint ( 0 ) ; 
  2215.   dumpint ( memtop ) ; 
  2216.   dumpint ( 7006 ) ; 
  2217.   dumpint ( 2551 ) ; 
  2218.   dumpint ( 307 ) ; 
  2219.   dumpint ( poolptr ) ; 
  2220.   dumpint ( strptr ) ; 
  2221.   dumpthings ( strstart [ 0 ] , strptr + 1 ) ; 
  2222.   dumpthings ( strpool [ 0 ] , poolptr ) ; 
  2223.   println () ; 
  2224.   printint ( strptr ) ; 
  2225.   print ( 1251 ) ; 
  2226.   printint ( poolptr ) ; 
  2227.   sortavail () ; 
  2228.   varused = 0 ; 
  2229.   dumpint ( lomemmax ) ; 
  2230.   dumpint ( rover ) ; 
  2231.   p = 0 ; 
  2232.   q = rover ; 
  2233.   x = 0 ; 
  2234.   do {
  2235.       dumpthings ( mem [ p ] , q + 2 - p ) ; 
  2236.     x = x + q + 2 - p ; 
  2237.     varused = varused + q - p ; 
  2238.     p = q + mem [ q ] .hh .v.LH ; 
  2239.     q = mem [ q + 1 ] .hh .v.RH ; 
  2240.   } while ( ! ( q == rover ) ) ; 
  2241.   varused = varused + lomemmax - p ; 
  2242.   dynused = memend + 1 - himemmin ; 
  2243.   dumpthings ( mem [ p ] , lomemmax + 1 - p ) ; 
  2244.   x = x + lomemmax + 1 - p ; 
  2245.   dumpint ( himemmin ) ; 
  2246.   dumpint ( avail ) ; 
  2247.   dumpthings ( mem [ himemmin ] , memend + 1 - himemmin ) ; 
  2248.   x = x + memend + 1 - himemmin ; 
  2249.   p = avail ; 
  2250.   while ( p != 0 ) {
  2251.       
  2252.     decr ( dynused ) ; 
  2253.     p = mem [ p ] .hh .v.RH ; 
  2254.   } 
  2255.   dumpint ( varused ) ; 
  2256.   dumpint ( dynused ) ; 
  2257.   println () ; 
  2258.   printint ( x ) ; 
  2259.   print ( 1252 ) ; 
  2260.   printint ( varused ) ; 
  2261.   printchar ( 38 ) ; 
  2262.   printint ( dynused ) ; 
  2263.   k = 1 ; 
  2264.   do {
  2265.       j = k ; 
  2266.     while ( j < 6162 ) {
  2267.     
  2268.       if ( ( eqtb [ j ] .hh .v.RH == eqtb [ j + 1 ] .hh .v.RH ) && ( eqtb [ j 
  2269.       ] .hh.b0 == eqtb [ j + 1 ] .hh.b0 ) && ( eqtb [ j ] .hh.b1 == eqtb [ j + 
  2270.       1 ] .hh.b1 ) ) 
  2271.       goto lab41 ; 
  2272.       incr ( j ) ; 
  2273.     } 
  2274.     l = 6163 ; 
  2275.     goto lab31 ; 
  2276.     lab41: incr ( j ) ; 
  2277.     l = j ; 
  2278.     while ( j < 6162 ) {
  2279.     
  2280.       if ( ( eqtb [ j ] .hh .v.RH != eqtb [ j + 1 ] .hh .v.RH ) || ( eqtb [ j 
  2281.       ] .hh.b0 != eqtb [ j + 1 ] .hh.b0 ) || ( eqtb [ j ] .hh.b1 != eqtb [ j + 
  2282.       1 ] .hh.b1 ) ) 
  2283.       goto lab31 ; 
  2284.       incr ( j ) ; 
  2285.     } 
  2286.     lab31: dumpint ( l - k ) ; 
  2287.     dumpthings ( eqtb [ k ] , l - k ) ; 
  2288.     k = j + 1 ; 
  2289.     dumpint ( k - l ) ; 
  2290.   } while ( ! ( k == 6163 ) ) ; 
  2291.   do {
  2292.       j = k ; 
  2293.     while ( j < 7006 ) {
  2294.     
  2295.       if ( eqtb [ j ] .cint == eqtb [ j + 1 ] .cint ) 
  2296.       goto lab42 ; 
  2297.       incr ( j ) ; 
  2298.     } 
  2299.     l = 7007 ; 
  2300.     goto lab32 ; 
  2301.     lab42: incr ( j ) ; 
  2302.     l = j ; 
  2303.     while ( j < 7006 ) {
  2304.     
  2305.       if ( eqtb [ j ] .cint != eqtb [ j + 1 ] .cint ) 
  2306.       goto lab32 ; 
  2307.       incr ( j ) ; 
  2308.     } 
  2309.     lab32: dumpint ( l - k ) ; 
  2310.     dumpthings ( eqtb [ k ] , l - k ) ; 
  2311.     k = j + 1 ; 
  2312.     dumpint ( k - l ) ; 
  2313.   } while ( ! ( k > 7006 ) ) ; 
  2314.   dumpint ( parloc ) ; 
  2315.   dumpint ( writeloc ) ; 
  2316.   dumpint ( hashused ) ; 
  2317.   cscount = 3513 - hashused ; 
  2318.   {register integer for_end; p = 514 ; for_end = hashused ; if ( p <= 
  2319.   for_end) do 
  2320.     if ( hash [ p ] .v.RH != 0 ) 
  2321.     {
  2322.       dumpint ( p ) ; 
  2323.       dumphh ( hash [ p ] ) ; 
  2324.       incr ( cscount ) ; 
  2325.     } 
  2326.   while ( p++ < for_end ) ; } 
  2327.   dumpthings ( hash [ hashused + 1 ] , 3780 - hashused ) ; 
  2328.   dumpint ( cscount ) ; 
  2329.   println () ; 
  2330.   printint ( cscount ) ; 
  2331.   print ( 1253 ) ; 
  2332.   dumpint ( fmemptr ) ; 
  2333.   {
  2334.     dumpthings ( fontinfo [ 0 ] , fmemptr ) ; 
  2335.     dumpint ( fontptr ) ; 
  2336.     dumpthings ( fontcheck [ 0 ] , fontptr + 1 ) ; 
  2337.     dumpthings ( fontsize [ 0 ] , fontptr + 1 ) ; 
  2338.     dumpthings ( fontdsize [ 0 ] , fontptr + 1 ) ; 
  2339.     dumpthings ( fontparams [ 0 ] , fontptr + 1 ) ; 
  2340.     dumpthings ( hyphenchar [ 0 ] , fontptr + 1 ) ; 
  2341.     dumpthings ( skewchar [ 0 ] , fontptr + 1 ) ; 
  2342.     dumpthings ( fontname [ 0 ] , fontptr + 1 ) ; 
  2343.     dumpthings ( fontarea [ 0 ] , fontptr + 1 ) ; 
  2344.     dumpthings ( fontbc [ 0 ] , fontptr + 1 ) ; 
  2345.     dumpthings ( fontec [ 0 ] , fontptr + 1 ) ; 
  2346.     dumpthings ( charbase [ 0 ] , fontptr + 1 ) ; 
  2347.     dumpthings ( widthbase [ 0 ] , fontptr + 1 ) ; 
  2348.     dumpthings ( heightbase [ 0 ] , fontptr + 1 ) ; 
  2349.     dumpthings ( depthbase [ 0 ] , fontptr + 1 ) ; 
  2350.     dumpthings ( italicbase [ 0 ] , fontptr + 1 ) ; 
  2351.     dumpthings ( ligkernbase [ 0 ] , fontptr + 1 ) ; 
  2352.     dumpthings ( kernbase [ 0 ] , fontptr + 1 ) ; 
  2353.     dumpthings ( extenbase [ 0 ] , fontptr + 1 ) ; 
  2354.     dumpthings ( parambase [ 0 ] , fontptr + 1 ) ; 
  2355.     dumpthings ( fontglue [ 0 ] , fontptr + 1 ) ; 
  2356.     dumpthings ( bcharlabel [ 0 ] , fontptr + 1 ) ; 
  2357.     dumpthings ( fontbchar [ 0 ] , fontptr + 1 ) ; 
  2358.     dumpthings ( fontfalsebchar [ 0 ] , fontptr + 1 ) ; 
  2359.     {register integer for_end; k = 0 ; for_end = fontptr ; if ( k <= for_end) 
  2360.     do 
  2361.       {
  2362.     printnl ( 1256 ) ; 
  2363.     printesc ( hash [ 3524 + k ] .v.RH ) ; 
  2364.     printchar ( 61 ) ; 
  2365.     printfilename ( fontname [ k ] , fontarea [ k ] , 335 ) ; 
  2366.     if ( fontsize [ k ] != fontdsize [ k ] ) 
  2367.     {
  2368.       print ( 737 ) ; 
  2369.       printscaled ( fontsize [ k ] ) ; 
  2370.       print ( 393 ) ; 
  2371.     } 
  2372.       } 
  2373.     while ( k++ < for_end ) ; } 
  2374.   } 
  2375.   println () ; 
  2376.   printint ( fmemptr - 7 ) ; 
  2377.   print ( 1254 ) ; 
  2378.   printint ( fontptr - 0 ) ; 
  2379.   print ( 1255 ) ; 
  2380.   if ( fontptr != 1 ) 
  2381.   printchar ( 115 ) ; 
  2382.   dumpint ( hyphcount ) ; 
  2383.   {register integer for_end; k = 0 ; for_end = 307 ; if ( k <= for_end) do 
  2384.     if ( hyphword [ k ] != 0 ) 
  2385.     {
  2386.       dumpint ( k ) ; 
  2387.       dumpint ( hyphword [ k ] ) ; 
  2388.       dumpint ( hyphlist [ k ] ) ; 
  2389.     } 
  2390.   while ( k++ < for_end ) ; } 
  2391.   println () ; 
  2392.   printint ( hyphcount ) ; 
  2393.   print ( 1257 ) ; 
  2394.   if ( hyphcount != 1 ) 
  2395.   printchar ( 115 ) ; 
  2396.   if ( trienotready ) 
  2397.   inittrie () ; 
  2398.   dumpint ( triemax ) ; 
  2399.   dumpthings ( trietrl [ 0 ] , triemax + 1 ) ; 
  2400.   dumpthings ( trietro [ 0 ] , triemax + 1 ) ; 
  2401.   dumpthings ( trietrc [ 0 ] , triemax + 1 ) ; 
  2402.   dumpint ( trieopptr ) ; 
  2403.   dumpthings ( hyfdistance [ 1 ] , trieopptr ) ; 
  2404.   dumpthings ( hyfnum [ 1 ] , trieopptr ) ; 
  2405.   dumpthings ( hyfnext [ 1 ] , trieopptr ) ; 
  2406.   printnl ( 1258 ) ; 
  2407.   printint ( triemax ) ; 
  2408.   print ( 1259 ) ; 
  2409.   printint ( trieopptr ) ; 
  2410.   print ( 1260 ) ; 
  2411.   if ( trieopptr != 1 ) 
  2412.   printchar ( 115 ) ; 
  2413.   print ( 1261 ) ; 
  2414.   printint ( trieopsize ) ; 
  2415.   {register integer for_end; k = 255 ; for_end = 0 ; if ( k >= for_end) do 
  2416.     if ( trieused [ k ] > 0 ) 
  2417.     {
  2418.       printnl ( 793 ) ; 
  2419.       printint ( trieused [ k ] ) ; 
  2420.       print ( 1262 ) ; 
  2421.       printint ( k ) ; 
  2422.       dumpint ( k ) ; 
  2423.       dumpint ( trieused [ k ] ) ; 
  2424.     } 
  2425.   while ( k-- > for_end ) ; } 
  2426.   dumpint ( interaction ) ; 
  2427.   dumpint ( formatident ) ; 
  2428.   dumpint ( 69069L ) ; 
  2429.   eqtb [ 6194 ] .cint = 0 ; 
  2430.   wclose ( fmtfile ) ; 
  2431. #endif /* INITEX */
  2432. boolean loadfmtfile ( ) 
  2433. {/* 6666 10 */ register boolean Result; loadfmtfile_regmem 
  2434.   integer j, k  ; 
  2435.   halfword p, q  ; 
  2436.   integer x  ; 
  2437.   undumpint ( x ) ; 
  2438.   if ( x != 127541235L ) 
  2439.   goto lab6666 ; 
  2440.   undumpint ( x ) ; 
  2441.   if ( x != 0 ) 
  2442.   goto lab6666 ; 
  2443.   undumpint ( x ) ; 
  2444.   if ( x != memtop ) 
  2445.   goto lab6666 ; 
  2446.   undumpint ( x ) ; 
  2447.   if ( x != 7006 ) 
  2448.   goto lab6666 ; 
  2449.   undumpint ( x ) ; 
  2450.   if ( x != 2551 ) 
  2451.   goto lab6666 ; 
  2452.   undumpint ( x ) ; 
  2453.   if ( x != 307 ) 
  2454.   goto lab6666 ; 
  2455.   {
  2456.     undumpint ( x ) ; 
  2457.     if ( x < 0 ) 
  2458.     goto lab6666 ; 
  2459.     if ( x > poolsize ) 
  2460.     {
  2461.       wakeupterminal () ; 
  2462.       (void) fprintf( stdout , "%s%s\n",  "---! Must increase the " , "string pool size" ) ; 
  2463.       goto lab6666 ; 
  2464.     } 
  2465.     else poolptr = x ; 
  2466.   } 
  2467.   {
  2468.     undumpint ( x ) ; 
  2469.     if ( x < 0 ) 
  2470.     goto lab6666 ; 
  2471.     if ( x > maxstrings ) 
  2472.     {
  2473.       wakeupterminal () ; 
  2474.       (void) fprintf( stdout , "%s%s\n",  "---! Must increase the " , "max strings" ) ; 
  2475.       goto lab6666 ; 
  2476.     } 
  2477.     else strptr = x ; 
  2478.   } 
  2479.   undumpthings ( strstart [ 0 ] , strptr + 1 ) ; 
  2480.   undumpthings ( strpool [ 0 ] , poolptr ) ; 
  2481.   initstrptr = strptr ; 
  2482.   initpoolptr = poolptr ; 
  2483.   {
  2484.     undumpint ( x ) ; 
  2485.     if ( ( x < 1019 ) || ( x > memtop - 14 ) ) 
  2486.     goto lab6666 ; 
  2487.     else lomemmax = x ; 
  2488.   } 
  2489.   {
  2490.     undumpint ( x ) ; 
  2491.     if ( ( x < 20 ) || ( x > lomemmax ) ) 
  2492.     goto lab6666 ; 
  2493.     else rover = x ; 
  2494.   } 
  2495.   p = 0 ; 
  2496.   q = rover ; 
  2497.   do {
  2498.       undumpthings ( mem [ p ] , q + 2 - p ) ; 
  2499.     p = q + mem [ q ] .hh .v.LH ; 
  2500.     if ( ( p > lomemmax ) || ( ( q >= mem [ q + 1 ] .hh .v.RH ) && ( mem [ q + 
  2501.     1 ] .hh .v.RH != rover ) ) ) 
  2502.     goto lab6666 ; 
  2503.     q = mem [ q + 1 ] .hh .v.RH ; 
  2504.   } while ( ! ( q == rover ) ) ; 
  2505.   undumpthings ( mem [ p ] , lomemmax + 1 - p ) ; 
  2506.   if ( memmin < -2 ) 
  2507.   {
  2508.     p = mem [ rover + 1 ] .hh .v.LH ; 
  2509.     q = memmin + 1 ; 
  2510.     mem [ memmin ] .hh .v.RH = 0 ; 
  2511.     mem [ memmin ] .hh .v.LH = 0 ; 
  2512.     mem [ p + 1 ] .hh .v.RH = q ; 
  2513.     mem [ rover + 1 ] .hh .v.LH = q ; 
  2514.     mem [ q + 1 ] .hh .v.RH = rover ; 
  2515.     mem [ q + 1 ] .hh .v.LH = p ; 
  2516.     mem [ q ] .hh .v.RH = 65535L ; 
  2517.     mem [ q ] .hh .v.LH = -0 - q ; 
  2518.   } 
  2519.   {
  2520.     undumpint ( x ) ; 
  2521.     if ( ( x < lomemmax + 1 ) || ( x > memtop - 13 ) ) 
  2522.     goto lab6666 ; 
  2523.     else himemmin = x ; 
  2524.   } 
  2525.   {
  2526.     undumpint ( x ) ; 
  2527.     if ( ( x < 0 ) || ( x > memtop ) ) 
  2528.     goto lab6666 ; 
  2529.     else avail = x ; 
  2530.   } 
  2531.   memend = memtop ; 
  2532.   undumpthings ( mem [ himemmin ] , memend + 1 - himemmin ) ; 
  2533.   undumpint ( varused ) ; 
  2534.   undumpint ( dynused ) ; 
  2535.   k = 1 ; 
  2536.   do {
  2537.       undumpint ( x ) ; 
  2538.     if ( ( x < 1 ) || ( k + x > 7007 ) ) 
  2539.     goto lab6666 ; 
  2540.     undumpthings ( eqtb [ k ] , x ) ; 
  2541.     k = k + x ; 
  2542.     undumpint ( x ) ; 
  2543.     if ( ( x < 0 ) || ( k + x > 7007 ) ) 
  2544.     goto lab6666 ; 
  2545.     {register integer for_end; j = k ; for_end = k + x - 1 ; if ( j <= 
  2546.     for_end) do 
  2547.       eqtb [ j ] = eqtb [ k - 1 ] ; 
  2548.     while ( j++ < for_end ) ; } 
  2549.     k = k + x ; 
  2550.   } while ( ! ( k > 7006 ) ) ; 
  2551.   {
  2552.     undumpint ( x ) ; 
  2553.     if ( ( x < 514 ) || ( x > 3514 ) ) 
  2554.     goto lab6666 ; 
  2555.     else parloc = x ; 
  2556.   } 
  2557.   partoken = 4095 + parloc ; 
  2558.   {
  2559.     undumpint ( x ) ; 
  2560.     if ( ( x < 514 ) || ( x > 3514 ) ) 
  2561.     goto lab6666 ; 
  2562.     else
  2563.     writeloc = x ; 
  2564.   } 
  2565.   {
  2566.     undumpint ( x ) ; 
  2567.     if ( ( x < 514 ) || ( x > 3514 ) ) 
  2568.     goto lab6666 ; 
  2569.     else hashused = x ; 
  2570.   } 
  2571.   p = 513 ; 
  2572.   do {
  2573.       { 
  2574.       undumpint ( x ) ; 
  2575.       if ( ( x < p + 1 ) || ( x > hashused ) ) 
  2576.       goto lab6666 ; 
  2577.       else p = x ; 
  2578.     } 
  2579.     undumphh ( hash [ p ] ) ; 
  2580.   } while ( ! ( p == hashused ) ) ; 
  2581.   undumpthings ( hash [ hashused + 1 ] , 3780 - hashused ) ; 
  2582.   undumpint ( cscount ) ; 
  2583.   {
  2584.     undumpint ( x ) ; 
  2585.     if ( x < 7 ) 
  2586.     goto lab6666 ; 
  2587.     if ( x > fontmemsize ) 
  2588.     {
  2589.       wakeupterminal () ; 
  2590.       (void) fprintf( stdout , "%s%s\n",  "---! Must increase the " , "font mem size" ) ; 
  2591.       goto lab6666 ; 
  2592.     } 
  2593.     else fmemptr = x ; 
  2594.   } 
  2595.   {
  2596.     undumpthings ( fontinfo [ 0 ] , fmemptr ) ; 
  2597.     {
  2598.       undumpint ( x ) ; 
  2599.       if ( x < 0 ) 
  2600.       goto lab6666 ; 
  2601.       if ( x > fontmax ) 
  2602.       {
  2603.     wakeupterminal () ; 
  2604.     (void) fprintf( stdout , "%s%s\n",  "---! Must increase the " , "font max" ) ; 
  2605.     goto lab6666 ; 
  2606.       } 
  2607.       else fontptr = x ; 
  2608.     } 
  2609.     undumpthings ( fontcheck [ 0 ] , fontptr + 1 ) ; 
  2610.     undumpthings ( fontsize [ 0 ] , fontptr + 1 ) ; 
  2611.     undumpthings ( fontdsize [ 0 ] , fontptr + 1 ) ; 
  2612.     undumpthings ( fontparams [ 0 ] , fontptr + 1 ) ; 
  2613.     undumpthings ( hyphenchar [ 0 ] , fontptr + 1 ) ; 
  2614.     undumpthings ( skewchar [ 0 ] , fontptr + 1 ) ; 
  2615.     undumpthings ( fontname [ 0 ] , fontptr + 1 ) ; 
  2616.     undumpthings ( fontarea [ 0 ] , fontptr + 1 ) ; 
  2617.     undumpthings ( fontbc [ 0 ] , fontptr + 1 ) ; 
  2618.     undumpthings ( fontec [ 0 ] , fontptr + 1 ) ; 
  2619.     undumpthings ( charbase [ 0 ] , fontptr + 1 ) ; 
  2620.     undumpthings ( widthbase [ 0 ] , fontptr + 1 ) ; 
  2621.     undumpthings ( heightbase [ 0 ] , fontptr + 1 ) ; 
  2622.     undumpthings ( depthbase [ 0 ] , fontptr + 1 ) ; 
  2623.     undumpthings ( italicbase [ 0 ] , fontptr + 1 ) ; 
  2624.     undumpthings ( ligkernbase [ 0 ] , fontptr + 1 ) ; 
  2625.     undumpthings ( kernbase [ 0 ] , fontptr + 1 ) ; 
  2626.     undumpthings ( extenbase [ 0 ] , fontptr + 1 ) ; 
  2627.     undumpthings ( parambase [ 0 ] , fontptr + 1 ) ; 
  2628.     undumpthings ( fontglue [ 0 ] , fontptr + 1 ) ; 
  2629.     undumpthings ( bcharlabel [ 0 ] , fontptr + 1 ) ; 
  2630.     undumpthings ( fontbchar [ 0 ] , fontptr + 1 ) ; 
  2631.     undumpthings ( fontfalsebchar [ 0 ] , fontptr + 1 ) ; 
  2632.   } 
  2633.   {
  2634.     undumpint ( x ) ; 
  2635.     if ( ( x < 0 ) || ( x > 307 ) ) 
  2636.     goto lab6666 ; 
  2637.     else hyphcount = x ; 
  2638.   } 
  2639.   {register integer for_end; k = 1 ; for_end = hyphcount ; if ( k <= for_end) 
  2640.   do 
  2641.     {
  2642.       {
  2643.     undumpint ( x ) ; 
  2644.     if ( ( x < 0 ) || ( x > 307 ) ) 
  2645.     goto lab6666 ; 
  2646.     else j = x ; 
  2647.       } 
  2648.       {
  2649.     undumpint ( x ) ; 
  2650.     if ( ( x < 0 ) || ( x > strptr ) ) 
  2651.     goto lab6666 ; 
  2652.     else hyphword [ j ] = x ; 
  2653.       } 
  2654.       {
  2655.     undumpint ( x ) ; 
  2656.     if ( ( x < 0 ) || ( x > 65535L ) ) 
  2657.     goto lab6666 ; 
  2658.     else hyphlist [ j ] = x ; 
  2659.       } 
  2660.     } 
  2661.   while ( k++ < for_end ) ; } 
  2662.   {
  2663.     undumpint ( x ) ; 
  2664.     if ( x < 0 ) 
  2665.     goto lab6666 ; 
  2666.     if ( x > triesize ) 
  2667.     {
  2668.       wakeupterminal () ; 
  2669.       (void) fprintf( stdout , "%s%s\n",  "---! Must increase the " , "trie size" ) ; 
  2670.       goto lab6666 ; 
  2671.     } 
  2672.     else j = x ; 
  2673.   } 
  2674.     ;
  2675. #ifdef INITEX
  2676.   triemax = j ; 
  2677. #endif /* INITEX */
  2678.   undumpthings ( trietrl [ 0 ] , j + 1 ) ; 
  2679.   undumpthings ( trietro [ 0 ] , j + 1 ) ; 
  2680.   undumpthings ( trietrc [ 0 ] , j + 1 ) ; 
  2681.   {
  2682.     undumpint ( x ) ; 
  2683.     if ( x < 0 ) 
  2684.     goto lab6666 ; 
  2685.     if ( x > trieopsize ) 
  2686.     {
  2687.       wakeupterminal () ; 
  2688.       (void) fprintf( stdout , "%s%s\n",  "---! Must increase the " , "trie op size" ) ; 
  2689.       goto lab6666 ; 
  2690.     } 
  2691.     else j = x ; 
  2692.   } 
  2693.     ;
  2694. #ifdef INITEX
  2695.   trieopptr = j ; 
  2696. #endif /* INITEX */
  2697.   undumpthings ( hyfdistance [ 1 ] , j ) ; 
  2698.   undumpthings ( hyfnum [ 1 ] , j ) ; 
  2699.   undumpthings ( hyfnext [ 1 ] , j ) ; 
  2700.     ;
  2701. #ifdef INITEX
  2702.   {register integer for_end; k = 0 ; for_end = 255 ; if ( k <= for_end) do 
  2703.     trieused [ k ] = 0 ; 
  2704.   while ( k++ < for_end ) ; } 
  2705. #endif /* INITEX */
  2706.   k = 256 ; 
  2707.   while ( j > 0 ) {
  2708.       
  2709.     {
  2710.       undumpint ( x ) ; 
  2711.       if ( ( x < 0 ) || ( x > k - 1 ) ) 
  2712.       goto lab6666 ; 
  2713.       else k = x ; 
  2714.     } 
  2715.     {
  2716.       undumpint ( x ) ; 
  2717.       if ( ( x < 1 ) || ( x > j ) ) 
  2718.       goto lab6666 ; 
  2719.       else x = x ; 
  2720.     } 
  2721.     ;
  2722. #ifdef INITEX
  2723.     trieused [ k ] = x ; 
  2724. #endif /* INITEX */
  2725.     j = j - x ; 
  2726.     opstart [ k ] = j ; 
  2727.   } 
  2728.     ;
  2729. #ifdef INITEX
  2730.   trienotready = false 
  2731. #endif /* INITEX */
  2732.   ; 
  2733.   {
  2734.     undumpint ( x ) ; 
  2735.     if ( ( x < 0 ) || ( x > 3 ) ) 
  2736.     goto lab6666 ; 
  2737.     else interaction = x ; 
  2738.   } 
  2739.   {
  2740.     undumpint ( x ) ; 
  2741.     if ( ( x < 0 ) || ( x > strptr ) ) 
  2742.     goto lab6666 ; 
  2743.     else formatident = x ; 
  2744.   } 
  2745.   undumpint ( x ) ; 
  2746.   if ( ( x != 69069L ) || feof ( fmtfile ) ) 
  2747.   goto lab6666 ; 
  2748.   Result = true ; 
  2749.   return(Result) ; 
  2750.   lab6666: wakeupterminal () ; 
  2751.   (void) fprintf( stdout , "%s\n",  "(Fatal format file error; I'm stymied)" ) ; 
  2752.   Result = false ; 
  2753.   return(Result) ; 
  2754. void finalcleanup ( ) 
  2755. {/* 10 */ finalcleanup_regmem 
  2756.   smallnumber c  ; 
  2757.   c = curchr ; 
  2758.   if ( jobname == 0 ) 
  2759.   openlogfile () ; 
  2760.   while ( openparens > 0 ) {
  2761.       
  2762.     print ( 1267 ) ; 
  2763.     decr ( openparens ) ; 
  2764.   } 
  2765.   if ( curlevel > 1 ) 
  2766.   {
  2767.     printnl ( 40 ) ; 
  2768.     printesc ( 1268 ) ; 
  2769.     print ( 1269 ) ; 
  2770.     printint ( curlevel - 1 ) ; 
  2771.     printchar ( 41 ) ; 
  2772.   } 
  2773.   while ( condptr != 0 ) {
  2774.       
  2775.     printnl ( 40 ) ; 
  2776.     printesc ( 1268 ) ; 
  2777.     print ( 1270 ) ; 
  2778.     printcmdchr ( 105 , curif ) ; 
  2779.     if ( ifline != 0 ) 
  2780.     {
  2781.       print ( 1271 ) ; 
  2782.       printint ( ifline ) ; 
  2783.     } 
  2784.     print ( 1272 ) ; 
  2785.     ifline = mem [ condptr + 1 ] .cint ; 
  2786.     curif = mem [ condptr ] .hh.b1 ; 
  2787.     condptr = mem [ condptr ] .hh .v.RH ; 
  2788.   } 
  2789.   if ( history != 0 ) 
  2790.   if ( ( ( history == 1 ) || ( interaction < 3 ) ) ) 
  2791.   if ( selector == 19 ) 
  2792.   {
  2793.     selector = 17 ; 
  2794.     printnl ( 1273 ) ; 
  2795.     selector = 19 ; 
  2796.   } 
  2797.   if ( c == 1 ) 
  2798.   {
  2799.     ;
  2800. #ifdef INITEX
  2801.     storefmtfile () ; 
  2802.     return ; 
  2803. #endif /* INITEX */
  2804.     printnl ( 1274 ) ; 
  2805.     return ; 
  2806.   } 
  2807. #ifdef INITEX
  2808. void initprim ( ) 
  2809. {initprim_regmem 
  2810.   nonewcontrolsequence = false ; 
  2811.   primitive ( 372 , 75 , 3782 ) ; 
  2812.   primitive ( 373 , 75 , 3783 ) ; 
  2813.   primitive ( 374 , 75 , 3784 ) ; 
  2814.   primitive ( 375 , 75 , 3785 ) ; 
  2815.   primitive ( 376 , 75 , 3786 ) ; 
  2816.   primitive ( 377 , 75 , 3787 ) ; 
  2817.   primitive ( 378 , 75 , 3788 ) ; 
  2818.   primitive ( 379 , 75 , 3789 ) ; 
  2819.   primitive ( 380 , 75 , 3790 ) ; 
  2820.   primitive ( 381 , 75 , 3791 ) ; 
  2821.   primitive ( 382 , 75 , 3792 ) ; 
  2822.   primitive ( 383 , 75 , 3793 ) ; 
  2823.   primitive ( 384 , 75 , 3794 ) ; 
  2824.   primitive ( 385 , 75 , 3795 ) ; 
  2825.   primitive ( 386 , 75 , 3796 ) ; 
  2826.   primitive ( 387 , 76 , 3797 ) ; 
  2827.   primitive ( 388 , 76 , 3798 ) ; 
  2828.   primitive ( 389 , 76 , 3799 ) ; 
  2829.   primitive ( 394 , 72 , 4313 ) ; 
  2830.   primitive ( 395 , 72 , 4314 ) ; 
  2831.   primitive ( 396 , 72 , 4315 ) ; 
  2832.   primitive ( 397 , 72 , 4316 ) ; 
  2833.   primitive ( 398 , 72 , 4317 ) ; 
  2834.   primitive ( 399 , 72 , 4318 ) ; 
  2835.   primitive ( 400 , 72 , 4319 ) ; 
  2836.   primitive ( 401 , 72 , 4320 ) ; 
  2837.   primitive ( 402 , 72 , 4321 ) ; 
  2838.   primitive ( 416 , 73 , 6163 ) ; 
  2839.   primitive ( 417 , 73 , 6164 ) ; 
  2840.   primitive ( 418 , 73 , 6165 ) ; 
  2841.   primitive ( 419 , 73 , 6166 ) ; 
  2842.   primitive ( 420 , 73 , 6167 ) ; 
  2843.   primitive ( 421 , 73 , 6168 ) ; 
  2844.   primitive ( 422 , 73 , 6169 ) ; 
  2845.   primitive ( 423 , 73 , 6170 ) ; 
  2846.   primitive ( 424 , 73 , 6171 ) ; 
  2847.   primitive ( 425 , 73 , 6172 ) ; 
  2848.   primitive ( 426 , 73 , 6173 ) ; 
  2849.   primitive ( 427 , 73 , 6174 ) ; 
  2850.   primitive ( 428 , 73 , 6175 ) ; 
  2851.   primitive ( 429 , 73 , 6176 ) ; 
  2852.   primitive ( 430 , 73 , 6177 ) ; 
  2853.   primitive ( 431 , 73 , 6178 ) ; 
  2854.   primitive ( 432 , 73 , 6179 ) ; 
  2855.   primitive ( 433 , 73 , 6180 ) ; 
  2856.   primitive ( 434 , 73 , 6181 ) ; 
  2857.   primitive ( 435 , 73 , 6182 ) ; 
  2858.   primitive ( 436 , 73 , 6183 ) ; 
  2859.   primitive ( 437 , 73 , 6184 ) ; 
  2860.   primitive ( 438 , 73 , 6185 ) ; 
  2861.   primitive ( 439 , 73 , 6186 ) ; 
  2862.   primitive ( 440 , 73 , 6187 ) ; 
  2863.   primitive ( 441 , 73 , 6188 ) ; 
  2864.   primitive ( 442 , 73 , 6189 ) ; 
  2865.   primitive ( 443 , 73 , 6190 ) ; 
  2866.   primitive ( 444 , 73 , 6191 ) ; 
  2867.   primitive ( 445 , 73 , 6192 ) ; 
  2868.   primitive ( 446 , 73 , 6193 ) ; 
  2869.   primitive ( 447 , 73 , 6194 ) ; 
  2870.   primitive ( 448 , 73 , 6195 ) ; 
  2871.   primitive ( 449 , 73 , 6196 ) ; 
  2872.   primitive ( 450 , 73 , 6197 ) ; 
  2873.   primitive ( 451 , 73 , 6198 ) ; 
  2874.   primitive ( 452 , 73 , 6199 ) ; 
  2875.   primitive ( 453 , 73 , 6200 ) ; 
  2876.   primitive ( 454 , 73 , 6201 ) ; 
  2877.   primitive ( 455 , 73 , 6202 ) ; 
  2878.   primitive ( 456 , 73 , 6203 ) ; 
  2879.   primitive ( 457 , 73 , 6204 ) ; 
  2880.   primitive ( 458 , 73 , 6205 ) ; 
  2881.   primitive ( 459 , 73 , 6206 ) ; 
  2882.   primitive ( 460 , 73 , 6207 ) ; 
  2883.   primitive ( 461 , 73 , 6208 ) ; 
  2884.   primitive ( 462 , 73 , 6209 ) ; 
  2885.   primitive ( 463 , 73 , 6210 ) ; 
  2886.   primitive ( 464 , 73 , 6211 ) ; 
  2887.   primitive ( 465 , 73 , 6212 ) ; 
  2888.   primitive ( 466 , 73 , 6213 ) ; 
  2889.   primitive ( 467 , 73 , 6214 ) ; 
  2890.   primitive ( 468 , 73 , 6215 ) ; 
  2891.   primitive ( 469 , 73 , 6216 ) ; 
  2892.   primitive ( 470 , 73 , 6217 ) ; 
  2893.   primitive ( 474 , 74 , 6730 ) ; 
  2894.   primitive ( 475 , 74 , 6731 ) ; 
  2895.   primitive ( 476 , 74 , 6732 ) ; 
  2896.   primitive ( 477 , 74 , 6733 ) ; 
  2897.   primitive ( 478 , 74 , 6734 ) ; 
  2898.   primitive ( 479 , 74 , 6735 ) ; 
  2899.   primitive ( 480 , 74 , 6736 ) ; 
  2900.   primitive ( 481 , 74 , 6737 ) ; 
  2901.   primitive ( 482 , 74 , 6738 ) ; 
  2902.   primitive ( 483 , 74 , 6739 ) ; 
  2903.   primitive ( 484 , 74 , 6740 ) ; 
  2904.   primitive ( 485 , 74 , 6741 ) ; 
  2905.   primitive ( 486 , 74 , 6742 ) ; 
  2906.   primitive ( 487 , 74 , 6743 ) ; 
  2907.   primitive ( 488 , 74 , 6744 ) ; 
  2908.   primitive ( 489 , 74 , 6745 ) ; 
  2909.   primitive ( 490 , 74 , 6746 ) ; 
  2910.   primitive ( 491 , 74 , 6747 ) ; 
  2911.   primitive ( 492 , 74 , 6748 ) ; 
  2912.   primitive ( 493 , 74 , 6749 ) ; 
  2913.   primitive ( 494 , 74 , 6750 ) ; 
  2914.   primitive ( 32 , 64 , 0 ) ; 
  2915.   primitive ( 47 , 44 , 0 ) ; 
  2916.   primitive ( 504 , 45 , 0 ) ; 
  2917.   primitive ( 505 , 90 , 0 ) ; 
  2918.   primitive ( 506 , 40 , 0 ) ; 
  2919.   primitive ( 507 , 41 , 0 ) ; 
  2920.   primitive ( 508 , 61 , 0 ) ; 
  2921.   primitive ( 509 , 16 , 0 ) ; 
  2922.   primitive ( 500 , 107 , 0 ) ; 
  2923.   primitive ( 510 , 15 , 0 ) ; 
  2924.   primitive ( 511 , 92 , 0 ) ; 
  2925.   primitive ( 501 , 67 , 0 ) ; 
  2926.   primitive ( 512 , 62 , 0 ) ; 
  2927.   hash [ 3516 ] .v.RH = 512 ; 
  2928.   eqtb [ 3516 ] = eqtb [ curval ] ; 
  2929.   primitive ( 513 , 102 , 0 ) ; 
  2930.   primitive ( 514 , 88 , 0 ) ; 
  2931.   primitive ( 515 , 77 , 0 ) ; 
  2932.   primitive ( 516 , 32 , 0 ) ; 
  2933.   primitive ( 517 , 36 , 0 ) ; 
  2934.   primitive ( 518 , 39 , 0 ) ; 
  2935.   primitive ( 327 , 37 , 0 ) ; 
  2936.   primitive ( 348 , 18 , 0 ) ; 
  2937.   primitive ( 519 , 46 , 0 ) ; 
  2938.   primitive ( 520 , 17 , 0 ) ; 
  2939.   primitive ( 521 , 54 , 0 ) ; 
  2940.   primitive ( 522 , 91 , 0 ) ; 
  2941.   primitive ( 523 , 34 , 0 ) ; 
  2942.   primitive ( 524 , 65 , 0 ) ; 
  2943.   primitive ( 525 , 103 , 0 ) ; 
  2944.   primitive ( 332 , 55 , 0 ) ; 
  2945.   primitive ( 526 , 63 , 0 ) ; 
  2946.   primitive ( 404 , 84 , 0 ) ; 
  2947.   primitive ( 527 , 42 , 0 ) ; 
  2948.   primitive ( 528 , 80 , 0 ) ; 
  2949.   primitive ( 529 , 66 , 0 ) ; 
  2950.   primitive ( 530 , 96 , 0 ) ; 
  2951.   primitive ( 531 , 0 , 256 ) ; 
  2952.   hash [ 3521 ] .v.RH = 531 ; 
  2953.   eqtb [ 3521 ] = eqtb [ curval ] ; 
  2954.   primitive ( 532 , 98 , 0 ) ; 
  2955.   primitive ( 533 , 109 , 0 ) ; 
  2956.   primitive ( 403 , 71 , 0 ) ; 
  2957.   primitive ( 349 , 38 , 0 ) ; 
  2958.   primitive ( 534 , 33 , 0 ) ; 
  2959.   primitive ( 535 , 56 , 0 ) ; 
  2960.   primitive ( 536 , 35 , 0 ) ; 
  2961.   primitive ( 593 , 13 , 256 ) ; 
  2962.   parloc = curval ; 
  2963.   partoken = 4095 + parloc ; 
  2964.   primitive ( 625 , 104 , 0 ) ; 
  2965.   primitive ( 626 , 104 , 1 ) ; 
  2966.   primitive ( 627 , 110 , 0 ) ; 
  2967.   primitive ( 628 , 110 , 1 ) ; 
  2968.   primitive ( 629 , 110 , 2 ) ; 
  2969.   primitive ( 630 , 110 , 3 ) ; 
  2970.   primitive ( 631 , 110 , 4 ) ; 
  2971.   primitive ( 472 , 89 , 0 ) ; 
  2972.   primitive ( 496 , 89 , 1 ) ; 
  2973.   primitive ( 391 , 89 , 2 ) ; 
  2974.   primitive ( 392 , 89 , 3 ) ; 
  2975.   primitive ( 664 , 79 , 102 ) ; 
  2976.   primitive ( 665 , 79 , 1 ) ; 
  2977.   primitive ( 666 , 82 , 0 ) ; 
  2978.   primitive ( 667 , 82 , 1 ) ; 
  2979.   primitive ( 668 , 83 , 1 ) ; 
  2980.   primitive ( 669 , 83 , 3 ) ; 
  2981.   primitive ( 670 , 83 , 2 ) ; 
  2982.   primitive ( 671 , 70 , 0 ) ; 
  2983.   primitive ( 672 , 70 , 1 ) ; 
  2984.   primitive ( 673 , 70 , 2 ) ; 
  2985.   primitive ( 674 , 70 , 3 ) ; 
  2986.   primitive ( 675 , 70 , 4 ) ; 
  2987.   primitive ( 731 , 108 , 0 ) ; 
  2988.   primitive ( 732 , 108 , 1 ) ; 
  2989.   primitive ( 733 , 108 , 2 ) ; 
  2990.   primitive ( 734 , 108 , 3 ) ; 
  2991.   primitive ( 735 , 108 , 4 ) ; 
  2992.   primitive ( 736 , 108 , 5 ) ; 
  2993.   primitive ( 752 , 105 , 0 ) ; 
  2994.   primitive ( 753 , 105 , 1 ) ; 
  2995.   primitive ( 754 , 105 , 2 ) ; 
  2996.   primitive ( 755 , 105 , 3 ) ; 
  2997.   primitive ( 756 , 105 , 4 ) ; 
  2998.   primitive ( 757 , 105 , 5 ) ; 
  2999.   primitive ( 758 , 105 , 6 ) ; 
  3000.   primitive ( 759 , 105 , 7 ) ; 
  3001.   primitive ( 760 , 105 , 8 ) ; 
  3002.   primitive ( 761 , 105 , 9 ) ; 
  3003.   primitive ( 762 , 105 , 10 ) ; 
  3004.   primitive ( 763 , 105 , 11 ) ; 
  3005.   primitive ( 764 , 105 , 12 ) ; 
  3006.   primitive ( 765 , 105 , 13 ) ; 
  3007.   primitive ( 766 , 105 , 14 ) ; 
  3008.   primitive ( 767 , 105 , 15 ) ; 
  3009.   primitive ( 768 , 105 , 16 ) ; 
  3010.   primitive ( 769 , 106 , 2 ) ; 
  3011.   hash [ 3518 ] .v.RH = 769 ; 
  3012.   eqtb [ 3518 ] = eqtb [ curval ] ; 
  3013.   primitive ( 770 , 106 , 4 ) ; 
  3014.   primitive ( 771 , 106 , 3 ) ; 
  3015.   primitive ( 794 , 87 , 0 ) ; 
  3016.   hash [ 3524 ] .v.RH = 794 ; 
  3017.   eqtb [ 3524 ] = eqtb [ curval ] ; 
  3018.   primitive ( 891 , 4 , 256 ) ; 
  3019.   primitive ( 892 , 5 , 257 ) ; 
  3020.   hash [ 3515 ] .v.RH = 892 ; 
  3021.   eqtb [ 3515 ] = eqtb [ curval ] ; 
  3022.   primitive ( 893 , 5 , 258 ) ; 
  3023.   hash [ 3519 ] .v.RH = 894 ; 
  3024.   hash [ 3520 ] .v.RH = 894 ; 
  3025.   eqtb [ 3520 ] .hh.b0 = 9 ; 
  3026.   eqtb [ 3520 ] .hh .v.RH = memtop - 11 ; 
  3027.   eqtb [ 3520 ] .hh.b1 = 1 ; 
  3028.   eqtb [ 3519 ] = eqtb [ 3520 ] ; 
  3029.   eqtb [ 3519 ] .hh.b0 = 115 ; 
  3030.   primitive ( 963 , 81 , 0 ) ; 
  3031.   primitive ( 964 , 81 , 1 ) ; 
  3032.   primitive ( 965 , 81 , 2 ) ; 
  3033.   primitive ( 966 , 81 , 3 ) ; 
  3034.   primitive ( 967 , 81 , 4 ) ; 
  3035.   primitive ( 968 , 81 , 5 ) ; 
  3036.   primitive ( 969 , 81 , 6 ) ; 
  3037.   primitive ( 970 , 81 , 7 ) ; 
  3038.   primitive ( 1018 , 14 , 0 ) ; 
  3039.   primitive ( 1019 , 14 , 1 ) ; 
  3040.   primitive ( 1020 , 26 , 4 ) ; 
  3041.   primitive ( 1021 , 26 , 0 ) ; 
  3042.   primitive ( 1022 , 26 , 1 ) ; 
  3043.   primitive ( 1023 , 26 , 2 ) ; 
  3044.   primitive ( 1024 , 26 , 3 ) ; 
  3045.   primitive ( 1025 , 27 , 4 ) ; 
  3046.   primitive ( 1026 , 27 , 0 ) ; 
  3047.   primitive ( 1027 , 27 , 1 ) ; 
  3048.   primitive ( 1028 , 27 , 2 ) ; 
  3049.   primitive ( 1029 , 27 , 3 ) ; 
  3050.   primitive ( 333 , 28 , 5 ) ; 
  3051.   primitive ( 337 , 29 , 1 ) ; 
  3052.   primitive ( 339 , 30 , 99 ) ; 
  3053.   primitive ( 1047 , 21 , 1 ) ; 
  3054.   primitive ( 1048 , 21 , 0 ) ; 
  3055.   primitive ( 1049 , 22 , 1 ) ; 
  3056.   primitive ( 1050 , 22 , 0 ) ; 
  3057.   primitive ( 405 , 20 , 0 ) ; 
  3058.   primitive ( 1051 , 20 , 1 ) ; 
  3059.   primitive ( 1052 , 20 , 2 ) ; 
  3060.   primitive ( 958 , 20 , 3 ) ; 
  3061.   primitive ( 1053 , 20 , 4 ) ; 
  3062.   primitive ( 960 , 20 , 5 ) ; 
  3063.   primitive ( 1054 , 20 , 106 ) ; 
  3064.   primitive ( 1055 , 31 , 99 ) ; 
  3065.   primitive ( 1056 , 31 , 100 ) ; 
  3066.   primitive ( 1057 , 31 , 101 ) ; 
  3067.   primitive ( 1058 , 31 , 102 ) ; 
  3068.   primitive ( 1073 , 43 , 1 ) ; 
  3069.   primitive ( 1074 , 43 , 0 ) ; 
  3070.   primitive ( 1083 , 25 , 12 ) ; 
  3071.   primitive ( 1084 , 25 , 11 ) ; 
  3072.   primitive ( 1085 , 25 , 10 ) ; 
  3073.   primitive ( 1086 , 23 , 0 ) ; 
  3074.   primitive ( 1087 , 23 , 1 ) ; 
  3075.   primitive ( 1088 , 24 , 0 ) ; 
  3076.   primitive ( 1089 , 24 , 1 ) ; 
  3077.   primitive ( 45 , 47 , 1 ) ; 
  3078.   primitive ( 346 , 47 , 0 ) ; 
  3079.   primitive ( 1120 , 48 , 0 ) ; 
  3080.   primitive ( 1121 , 48 , 1 ) ; 
  3081.   primitive ( 859 , 50 , 16 ) ; 
  3082.   primitive ( 860 , 50 , 17 ) ; 
  3083.   primitive ( 861 , 50 , 18 ) ; 
  3084.   primitive ( 862 , 50 , 19 ) ; 
  3085.   primitive ( 863 , 50 , 20 ) ; 
  3086.   primitive ( 864 , 50 , 21 ) ; 
  3087.   primitive ( 865 , 50 , 22 ) ; 
  3088.   primitive ( 866 , 50 , 23 ) ; 
  3089.   primitive ( 868 , 50 , 26 ) ; 
  3090.   primitive ( 867 , 50 , 27 ) ; 
  3091.   primitive ( 1122 , 51 , 0 ) ; 
  3092.   primitive ( 871 , 51 , 1 ) ; 
  3093.   primitive ( 872 , 51 , 2 ) ; 
  3094.   primitive ( 854 , 53 , 0 ) ; 
  3095.   primitive ( 855 , 53 , 2 ) ; 
  3096.   primitive ( 856 , 53 , 4 ) ; 
  3097.   primitive ( 857 , 53 , 6 ) ; 
  3098.   primitive ( 1140 , 52 , 0 ) ; 
  3099.   primitive ( 1141 , 52 , 1 ) ; 
  3100.   primitive ( 1142 , 52 , 2 ) ; 
  3101.   primitive ( 1143 , 52 , 3 ) ; 
  3102.   primitive ( 1144 , 52 , 4 ) ; 
  3103.   primitive ( 1145 , 52 , 5 ) ; 
  3104.   primitive ( 869 , 49 , 30 ) ; 
  3105.   primitive ( 870 , 49 , 31 ) ; 
  3106.   hash [ 3517 ] .v.RH = 870 ; 
  3107.   eqtb [ 3517 ] = eqtb [ curval ] ; 
  3108.   primitive ( 1164 , 93 , 1 ) ; 
  3109.   primitive ( 1165 , 93 , 2 ) ; 
  3110.   primitive ( 1166 , 93 , 4 ) ; 
  3111.   primitive ( 1167 , 97 , 0 ) ; 
  3112.   primitive ( 1168 , 97 , 1 ) ; 
  3113.   primitive ( 1169 , 97 , 2 ) ; 
  3114.   primitive ( 1170 , 97 , 3 ) ; 
  3115.   primitive ( 1184 , 94 , 0 ) ; 
  3116.   primitive ( 1185 , 94 , 1 ) ; 
  3117.   primitive ( 1186 , 95 , 0 ) ; 
  3118.   primitive ( 1187 , 95 , 1 ) ; 
  3119.   primitive ( 1188 , 95 , 2 ) ; 
  3120.   primitive ( 1189 , 95 , 3 ) ; 
  3121.   primitive ( 1190 , 95 , 4 ) ; 
  3122.   primitive ( 1191 , 95 , 5 ) ; 
  3123.   primitive ( 1192 , 95 , 6 ) ; 
  3124.   primitive ( 411 , 85 , 4883 ) ; 
  3125.   primitive ( 415 , 85 , 5907 ) ; 
  3126.   primitive ( 412 , 85 , 5139 ) ; 
  3127.   primitive ( 413 , 85 , 5395 ) ; 
  3128.   primitive ( 414 , 85 , 5651 ) ; 
  3129.   primitive ( 473 , 85 , 6474 ) ; 
  3130.   primitive ( 408 , 86 , 4835 ) ; 
  3131.   primitive ( 409 , 86 , 4851 ) ; 
  3132.   primitive ( 410 , 86 , 4867 ) ; 
  3133.   primitive ( 934 , 99 , 0 ) ; 
  3134.   primitive ( 946 , 99 , 1 ) ; 
  3135.   primitive ( 1208 , 78 , 0 ) ; 
  3136.   primitive ( 1209 , 78 , 1 ) ; 
  3137.   primitive ( 272 , 100 , 0 ) ; 
  3138.   primitive ( 273 , 100 , 1 ) ; 
  3139.   primitive ( 274 , 100 , 2 ) ; 
  3140.   primitive ( 1218 , 100 , 3 ) ; 
  3141.   primitive ( 1219 , 60 , 1 ) ; 
  3142.   primitive ( 1220 , 60 , 0 ) ; 
  3143.   primitive ( 1221 , 58 , 0 ) ; 
  3144.   primitive ( 1222 , 58 , 1 ) ; 
  3145.   primitive ( 1228 , 57 , 5139 ) ; 
  3146.   primitive ( 1229 , 57 , 5395 ) ; 
  3147.   primitive ( 1230 , 19 , 0 ) ; 
  3148.   primitive ( 1231 , 19 , 1 ) ; 
  3149.   primitive ( 1232 , 19 , 2 ) ; 
  3150.   primitive ( 1233 , 19 , 3 ) ; 
  3151.   primitive ( 1276 , 59 , 0 ) ; 
  3152.   primitive ( 590 , 59 , 1 ) ; 
  3153.   writeloc = curval ; 
  3154.   primitive ( 1277 , 59 , 2 ) ; 
  3155.   primitive ( 1278 , 59 , 3 ) ; 
  3156.   primitive ( 1279 , 59 , 4 ) ; 
  3157.   primitive ( 1280 , 59 , 5 ) ; 
  3158.   nonewcontrolsequence = true ; 
  3159. #endif /* INITEX */
  3160. void texbody ( ) 
  3161. {texbody_regmem 
  3162.   history = 3 ; 
  3163.   setpaths ( TEXFORMATPATHBIT + TEXINPUTPATHBIT + TEXPOOLPATHBIT + 
  3164.   TFMFILEPATHBIT ) ; 
  3165.   if ( readyalready == 314159L ) 
  3166.   goto lab1 ; 
  3167.   bad = 0 ; 
  3168.   if ( ( halferrorline < 30 ) || ( halferrorline > errorline - 15 ) ) 
  3169.   bad = 1 ; 
  3170.   if ( maxprintline < 60 ) 
  3171.   bad = 2 ; 
  3172.   if ( dvibufsize % 8 != 0 ) 
  3173.   bad = 3 ; 
  3174.   if ( 1100 > memtop ) 
  3175.   bad = 4 ; 
  3176.   if ( 2551 > 3000 ) 
  3177.   bad = 5 ; 
  3178.   if ( maxinopen >= 128 ) 
  3179.   bad = 6 ; 
  3180.   if ( memtop < 267 ) 
  3181.   bad = 7 ; 
  3182.     ;
  3183. #ifdef INITEX
  3184.   if ( ( memmin != 0 ) || ( memmax != memtop ) ) 
  3185.   bad = 10 ; 
  3186. #endif /* INITEX */
  3187.   if ( ( memmin > 0 ) || ( memmax < memtop ) ) 
  3188.   bad = 10 ; 
  3189.   if ( ( 0 > 0 ) || ( 255 < 127 ) ) 
  3190.   bad = 11 ; 
  3191.   if ( ( 0 > 0 ) || ( 65535L < 32767 ) ) 
  3192.   bad = 12 ; 
  3193.   if ( ( 0 < 0 ) || ( 255 > 65535L ) ) 
  3194.   bad = 13 ; 
  3195.   if ( ( memmin < 0 ) || ( memmax >= 65535L ) || ( -0 - memmin > 65536L ) ) 
  3196.   bad = 14 ; 
  3197.   if ( ( 0 < 0 ) || ( fontmax > 255 ) ) 
  3198.   bad = 15 ; 
  3199.   if ( fontmax > 256 ) 
  3200.   bad = 16 ; 
  3201.   if ( ( savesize > 65535L ) || ( maxstrings > 65535L ) ) 
  3202.   bad = 17 ; 
  3203.   if ( bufsize > 65535L ) 
  3204.   bad = 18 ; 
  3205.   if ( 255 < 255 ) 
  3206.   bad = 19 ; 
  3207.   if ( 7876 > 65535L ) 
  3208.   bad = 21 ; 
  3209.   if ( formatdefaultlength > FILENAMESIZE ) 
  3210.   bad = 31 ; 
  3211.   if ( 2 * 65535L < memtop - memmin ) 
  3212.   bad = 41 ; 
  3213.   if ( bad > 0 ) 
  3214.   {
  3215.     (void) fprintf( stdout , "%s%s%ld\n",  "Ouch---my internal constants have been clobbered!" ,     "---case " , (long)bad ) ; 
  3216.     goto lab9999 ; 
  3217.   } 
  3218.   initialize () ; 
  3219.     ;
  3220. #ifdef INITEX
  3221.   if ( ! getstringsstarted () ) 
  3222.   goto lab9999 ; 
  3223.   initprim () ; 
  3224.   initstrptr = strptr ; 
  3225.   initpoolptr = poolptr ; 
  3226.   dateandtime ( eqtb [ 6183 ] .cint , eqtb [ 6184 ] .cint , eqtb [ 6185 ] 
  3227.   .cint , eqtb [ 6186 ] .cint ) ; 
  3228. #endif /* INITEX */
  3229.   readyalready = 314159L ; 
  3230.   lab1: selector = 17 ; 
  3231.   tally = 0 ; 
  3232.   termoffset = 0 ; 
  3233.   fileoffset = 0 ; 
  3234.   (void) Fputs( stdout ,  "This is TeX, C Version 3.1t2" ) ; 
  3235.   if ( formatident > 0 ) 
  3236.   print ( formatident ) ; 
  3237.   println () ; 
  3238.   (void) Fputs( stdout ,  "Compiled for the Atari ST with GNU-C " __VERSION__ " by fgth (" __DATE__ ")" ) ; 
  3239.   println () ;
  3240.   flush ( stdout ) ; 
  3241.   jobname = 0 ; 
  3242.   nameinprogress = false ; 
  3243.   logopened = false ; 
  3244.   outputfilename = 0 ; 
  3245.   {
  3246.     {
  3247.       inputptr = 0 ; 
  3248.       maxinstack = 0 ; 
  3249.       inopen = 0 ; 
  3250.       openparens = 0 ; 
  3251.       maxbufstack = 0 ; 
  3252.       paramptr = 0 ; 
  3253.       maxparamstack = 0 ; 
  3254.       first = bufsize ; 
  3255.       do {
  3256.       buffer [ first ] = 0 ; 
  3257.     decr ( first ) ; 
  3258.       } while ( ! ( first == 0 ) ) ; 
  3259.       scannerstatus = 0 ; 
  3260.       warningindex = 0 ; 
  3261.       first = 1 ; 
  3262.       curinput .statefield = 33 ; 
  3263.       curinput .startfield = 1 ; 
  3264.       curinput .indexfield = 0 ; 
  3265.       line = 0 ; 
  3266.       curinput .namefield = 0 ; 
  3267.       forceeof = false ; 
  3268.       alignstate = 1000000L ; 
  3269.       if ( ! initterminal () ) 
  3270.       goto lab9999 ; 
  3271.       curinput .limitfield = last ; 
  3272.       first = last + 1 ; 
  3273.     } 
  3274.     if ( ( formatident == 0 ) || ( buffer [ curinput .locfield ] == 38 ) ) 
  3275.     {
  3276.       if ( formatident != 0 ) 
  3277.       initialize () ; 
  3278.       if ( ! openfmtfile () ) 
  3279.       goto lab9999 ; 
  3280.       if ( ! loadfmtfile () ) 
  3281.       {
  3282.     wclose ( fmtfile ) ; 
  3283.     goto lab9999 ; 
  3284.       } 
  3285.       wclose ( fmtfile ) ; 
  3286.       while ( ( curinput .locfield < curinput .limitfield ) && ( buffer [ 
  3287.       curinput .locfield ] == 32 ) ) incr ( curinput .locfield ) ; 
  3288.     } 
  3289.     if ( ( eqtb [ 6211 ] .cint < 0 ) || ( eqtb [ 6211 ] .cint > 255 ) ) 
  3290.     decr ( curinput .limitfield ) ; 
  3291.     else buffer [ curinput .limitfield ] = eqtb [ 6211 ] .cint ; 
  3292.     dateandtime ( eqtb [ 6183 ] .cint , eqtb [ 6184 ] .cint , eqtb [ 6185 ] 
  3293.     .cint , eqtb [ 6186 ] .cint ) ; 
  3294.     magicoffset = strstart [ 885 ] - 9 * 16 ; 
  3295.     if ( interaction == 0 ) 
  3296.     selector = 16 ; 
  3297.     else selector = 17 ; 
  3298.     if ( ( curinput .locfield < curinput .limitfield ) && ( eqtb [ 4883 + 
  3299.     buffer [ curinput .locfield ] ] .hh .v.RH != 0 ) ) 
  3300.     startinput () ; 
  3301.   } 
  3302.   history = 0 ; 
  3303.   maincontrol () ; 
  3304.   finalcleanup () ; 
  3305.   closefilesandterminate () ; 
  3306.   lab9999: {
  3307.       
  3308.     flush ( stdout ) ; 
  3309.     readyalready = 0 ; 
  3310.     if ( ( history != 0 ) && ( history != 1 ) ) 
  3311.     uexit ( 1 ) ; 
  3312.     else uexit ( 0 ) ; 
  3313.   } 
  3314.